论坛首页 Java版 Hibernate

Hibernate事务控制问题

浏览 2357 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2006-09-14
我在dao里面调用getHibernateTemplate().find("from XXXX"),那这里会启动一个事务.
那如果我又在service里面调多个这样的dao,那会启动多次事务.
现在的问题是我在调service之前已经通过AOP启动了事务,这样的话会和service里面的事务重叠,你们是怎么解决的?谢谢
   
最后更新时间:2006-09-14
你这个标题应该是Spring中Hibernate事务控制的问题。就你的问题,简单些,直接在Service方法上声明事务就可了。
   
0 请登录后投票
最后更新时间:2006-09-14
在service方法上申明的事务能影响到dao中的方法?


dao中的事务由谁来控制?
   
0 请登录后投票
最后更新时间:2006-09-14
你在Service方法中调用Dao中的方法,Dao中的数据操作会自动加入事务,根本不需要你去控制。
   
0 请登录后投票
最后更新时间:2006-09-15
查了些资料  应该属于嵌套事务问题

根据最外部事务结束时采取的操作,将提交或者回滚事务。如果提交外部事务,则内层嵌套的事务也会提交。如果回滚外部事务,则不论此前是否单独提交过内层事务,所有内层事务都将回滚。

在业务逻辑层使用的事务属于外部事务  它的行为能够影响嵌入在其中的dao调用中的内部事务,所以Spring中推荐将Transaction配置在service一级。
   
0 请登录后投票
最后更新时间:2006-09-15
如果你说的嵌套不是指的Spring中的嵌套传播行为,那就不正确了。如果是指的Spring中的嵌套传播行为,基本正确。不过都无所谓了,你知道Service上设置事务能满足你的应用需求就可以了。
   
0 请登录后投票
最后更新时间:2006-11-14
其实spring在services层设置了事务,在dao层执行save,update等方法时,会判断当前线程是否处于事务当中,如果处于事务当中则 dao层不执行事务,否则启动事务。
   
0 请登录后投票
论坛首页 Java版 Hibernate

跳转论坛:
JavaEye推荐