Rhyme/Hibernate getCurrentSession()与openSession()的区别

来源:互联网 发布:微博十大网络主播投票 编辑:程序博客网 时间:2024/06/06 00:20

Hibernate getCurrentSession()与openSession()的区别

sessionFactory.getCurrentSession()会查看当前上下文环境中有没有session,没有则创建,,在这个session没有提交之前,获得的session永远是同一个session,session一旦提交,则会获取新的session,另外使用getCurrentSession()获得的session不用手动执行session.close()方法

另外使用getCurrentSession()方法需要指定应用的上下文,具体配置如下图

而sessionFactory.openSession()每次调用都会创建一个新的session,所以不建议使用

这里写图片描述

为什么这么做?

这里写图片描述

原因是,openSession()可能导致事务方法出现不一致的情况

当我在执行事务控制的时候,分别调用两个DAO中的方法,且这两个方法是同步的,这个时候,如果两个DAO中分别使用的都是openSession()方法,那么就不能做到addUser()这个方法的事物一致性。

阅读全文
0 0
原创粉丝点击