public void test() {
//openSession()始终创建新的session
Session session1=sessionFactory.openSession();
Session session3=sessionFactory.openSession();
//输出为false
System.out.println(session1==session3);
//getCurrentSession() 必须配置 <property name="current_session_context_class">thread</property>
//因为getCurrentSession()要根据上下文来生成session,如果上下文存在session则不创建新的session,否则创建新的
Session session2=sessionFactory.getCurrentSession();
Session session4=sessionFactory.getCurrentSession();
//输出为true
System.out.println(session2==session4);
//getCurrentSession()生成的session提交事务时会自动close,并且session不能再被用
Session session5=sessionFactory.getCurrentSession();
session5.beginTransaction();
session5.getTransaction().commit();
Session session6=sessionFactory.getCurrentSession();
//输出为false
System.out.println(session5==session6);
}(hibernate之一)Sessionfactory的getCurrentSession与openSession的区别
最新推荐文章于 2018-12-08 09:33:29 发布
本文深入探讨了SessionFactory在Java ORM框架中的使用方法,包括其如何创建和获取Session实例,以及Session实例之间的关系和生命周期管理。通过示例代码演示SessionFactory在实际场景中的应用,帮助开发者更好地理解和利用这一关键组件。
4747

被折叠的 条评论
为什么被折叠?



