Hibernate创建session有2种方式:
1.openSession
2.getCurrentSession
这2种方式有什么区别呢?
1.getCurrentSession创建的session会和绑定到当前线程,而openSession不会。也就是说,openSession创建的session互相都是独立的,而getCurrentSession在未提交或者结束之前使用的都是同一个session。
2.getCurrentSession创建的线程会在事务回滚(rollback)或事物提交(commit)后自动关闭,而openSession必须手动关闭(调用session的close()方法)。
还有一点,采用getCurrentSession()需要在Hibernate.cfg.xml配置文件中加入如下配置:
本地事务:
<property name="hibernate.current_session_context_class">thread</property>
全局事务:
<property name="hibernate.current_session_context_class">jta</property>