-
org.hibernate.context.JTASessionContext
:当前会话根据JTA
来跟踪和界定。这和以前的仅支持 JTA 的方法是完全一样的。详情请参阅 Javadoc。 -
org.hibernate.context.ThreadLocalSessionContext
:当前会话通过当前执行的线程来跟踪和界定。详情也请参阅 Javadoc。 -
Hibernate用SessionFactory提供session,并且SessionFactory提供了两种取得session的方法:getCurrentSession()和openSession()。1.getCurrentSession()和openSession()的区别:1>.采用getCurrentSession()创建的session会绑定到当前线程中,即getCurrentSession会取得当前线程中已绑定的session,如果没有,则新建一个session并绑定到线程中。这样,保证了一个线程中各个业务方法使用的都是同一个线程,在编程式事务编程中省去了session的传递,是很方便的。而采用openSession()创建的session则只会新建session,从而不能保证数据的唯一性。2>.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>
Hibernate 上下文相关的会话
最新推荐文章于 2018-05-28 23:54:32 发布