Hibernate中get()和load()之间的区别
在休眠模式下,get()andload()是两种用于获取给定标识符的数据的方法。它们都属于Hibernate会话类。Get()如果给定标识符的会话高速缓存或数据库中没有可用的行,则方法返回null,而load()方法抛出未找到对象的异常。
1
基本的
它用于从数据库中获取给定标识符的数据
它还用于从数据库中获取给定标识符的数据
2
空对象
找不到给定标识符的对象,则它将返回null对象
它将抛出未找到对象的异常
3
延迟加载
它返回完全初始化的对象,因此该方法渴望加载对象
它总是返回代理对象,因此此方法是延迟加载对象
4
性能
比它慢,load()因为它返回完全初始化的对象,这会影响应用程序的性能
它稍微快一点。
5,
用例
如果不确定对象是否存在,请使用get()方法
如果您确定对象存在,则使用load()方法
Get()Hibernate中的示例
@Entity
public class User {
@Id
Integer id;
String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import com.journaldev.hibernate.util.HibernateUtil;
public class GetExample {
public static void main(String[] args) {
//获取会话工厂以开始事务
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
//获取示例
User user = (User) session.get(User.class, new Integer(2));
System.out.println("User ID= "+user.getId());
System.out.println("User Name= "+user.getName());
//关闭资源
tx.commit();
sessionFactory.close();
}
}Load()Hibernate中的示例
@Entity
public class User {
@Id
Integer id;
String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import com.journaldev.hibernate.util.HibernateUtil;
public class LoadExample {
public static void main(String[] args) {
//获取会话工厂以开始事务
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
//加载示例
User user = (User) session.load(User.class, new Integer(2));
System.out.println("User ID= "+user.getId());
System.out.println("User Name= "+user.getName());
//关闭资源
tx.commit();
sessionFactory.close();
}
}