openSession和getCurrentSession的区别 thred jta

1.在调用openSession()方法时,总是新建session,而getCurrentSession()方法,则是从上下文中找session,如果上下文中有session,那么就不需要新建,如果上下文中没有找到session,则新建session。

    2.getCurrentSession()可以用于界定事务边界,调用getCurrentSession()方法时,事务提交的时候,自动关闭session,而openSession()方法需要手动调用session.close()方法关闭session。

    3.getCurrenSession()查找session时的上下文,可以分为两种,一种为thread,一种为jta(需要在hibernate.cfg.xml文件中手动配置)。

        当上下文设置为thread时,getCurrentSession()查找session时到数据库的线程中去查找,直接使用数据库的Connection连接来管理事务。

        上下文设置为jta时,多半是项目的数据需要存储到不同的数据库,需要transaction manager来专门管理事务,这个transaction manager一般有application server来提供。这种事务,称为分布式事务。

    4.注意:openSession()方式和getCurrentSession()方式不能混用。

阅读更多
个人分类: hibernate
上一篇current_session_context_class的意思
下一篇tomcat配置数据源
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭