hibernate关于session的关闭实例解析
2018-02-12 11:05
656 查看
本文研究的主要是hibernate关于session的关闭,具体如下。
Student student = new Student(); student.setName("Jan"); student.setAge("22"); student.setAddress("广东省肇庆市"); Session session =HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); session.save(student); session.flush(); session.getTransaction().commit();
1、getCurrentSession()与openSession()的区别?
- 采用
getCurrentSession()
创建的session会绑定到当前线程中,而采用openSession()
,创建的session则不会 - 采用
getCurrentSession()
创建的session在commit或rollback时会自动关闭,而采用openSession()
,创建的session必须手动关闭
2、使用getCurrentSession()
需要在hibernate.cfg.xml文件中加入如下配置:
- 如果使用的是本地事务(jdbc事务)
<property name="hibernate.current_session_context_class">thread</property>
- 如果使用的是全局事务(jta事务)
<property name="hibernate.current_session_context_class">jta</property>
openSession()与
getCurrentSession()有何不同和关联呢?
在 SessionFactory 启动的时候, Hibernate 会根据配置创建相应的 CurrentSessionContext ,在
getCurrentSession()被调用的时候,实际被执行的方法是
CurrentSessionContext.currentSession()。在
currentSession()执行时,如果当前 Session 为空, currentSession 会调用 SessionFactory 的 openSession 。所以
getCurrentSession()对于 Java EE 来说是更好的获取 Session 的方法。
许多时候出现
session is close();原因就是你在hibernate.cfg.xml里面设置了
<property name="hibernate.current_session_context_class">thread</property>
系统在
commit();执行完之后就关闭了session,这时候你手动再关闭session就当然提示错误了
总结
以上就是本文关于hibernate关于session的关闭实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
您可能感兴趣的文章:
相关文章推荐
- hibernate关于session的关闭问题
- hibernate通过session实现增删改查操作实例解析
- 关于Hibernate里面session的crud方法解析
- hibernate关于session的关闭问题
- hibernate关于session的关闭问题
- 关于SSH整合中对于Hibernate的Session关闭的问题
- hibernate关于session的关闭问题
- hibernate关于session的关闭问题
- 关于Hibernate里面session的crud方法解析
- 关于codeigniter即ci的session关闭浏览器不能自动失效的问题
- 转:Could not commit Hibernate 问题,spring 事物 提交前session关闭问题
- spring整合hibernate关于session的管理
- 101------Spring + Hibernate进行开发Session不关闭的解决方法
- ThreadLocal的实现原理,及使用实例,解决spring,hibernate非web项目下的懒加载 no session or session was closed(1)!
- Hibernate Tip: 使用JBOSS MBEAN时,Session会在事务提交后自动关闭!
- 关于hibernate session中的三个状态
- 关于关闭IE清空session的总结
- 关于Hibernate的Session缓存的理解
- Hibernate的Session接口中save/delete/update方法2个参数(entityName)的深入解析
- hibernate多对多出现的session关闭异常