您的位置:首页 > 运维架构

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

2017-12-22 17:26 477 查看

Hibernate getCurrentSession()与openSession()的区别

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

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

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



为什么这么做?



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

当我在执行事务控制的时候,分别调用两个DAO中的方法,且这两个方法是同步的,这个时候,如果两个DAO中分别使用的都是openSession()方法,那么就不能做到addUser()这个方法的事物一致性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate session