标签:hibernate
业务场景:如何保持service调用多个dao时,统一事务。
session的产生方式
不考虑分布式环境
分布式调用
不同java虚拟机直接的对象调用
1.sessionFactory.openSession() 每次创建新session
2.sessionFactory.getCurrentSession();
(1)查看当前线程中的session是否存在
如果存在,从当前线程中取出session
如果不存在,创建一个session,并把这个session放到threadlocal中,用户从threadlocal中取出session。
(2)session.getCurrentSession的用法
1、在hibernate的配置文件中:
<property name="current_session_context_class">thread</property>
2、不需要写session.close方法,在事务提交的时候会自动关闭(由hibernate内部完成)
3、crud都需要事务
1、因为是一个线程,所以整个方法中一个session,一个事务
2、保证了整个业务操作的安全性
标签:hibernate
原文地址:http://pengya123.blog.51cto.com/8467424/1811632