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(); } }