openSession与getCurrentSession

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>


 

你可能感兴趣的:(openSession与getCurrentSession)