关闭

openSession和getCurrentSession的区别 thred jta

453人阅读 评论(0) 收藏 举报
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()方式不能混用。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:389016次
    • 积分:3258
    • 等级:
    • 排名:第10818名
    • 原创:15篇
    • 转载:119篇
    • 译文:0篇
    • 评论:32条
    最新评论