浏览 2357 次
|
锁定老贴子 主题:Hibernate事务控制问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2006-09-14
我在dao里面调用getHibernateTemplate().find("from XXXX"),那这里会启动一个事务.
那如果我又在service里面调多个这样的dao,那会启动多次事务. 现在的问题是我在调service之前已经通过AOP启动了事务,这样的话会和service里面的事务重叠,你们是怎么解决的?谢谢 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2006-09-14
你这个标题应该是Spring中Hibernate事务控制的问题。就你的问题,简单些,直接在Service方法上声明事务就可了。
|
|
| 返回顶楼 | |
|
最后更新时间:2006-09-14
在service方法上申明的事务能影响到dao中的方法?
dao中的事务由谁来控制? |
|
| 返回顶楼 | |
|
最后更新时间:2006-09-14
你在Service方法中调用Dao中的方法,Dao中的数据操作会自动加入事务,根本不需要你去控制。
|
|
| 返回顶楼 | |
|
最后更新时间:2006-09-15
查了些资料 应该属于嵌套事务问题
根据最外部事务结束时采取的操作,将提交或者回滚事务。如果提交外部事务,则内层嵌套的事务也会提交。如果回滚外部事务,则不论此前是否单独提交过内层事务,所有内层事务都将回滚。 在业务逻辑层使用的事务属于外部事务 它的行为能够影响嵌入在其中的dao调用中的内部事务,所以Spring中推荐将Transaction配置在service一级。 |
|
| 返回顶楼 | |
|
最后更新时间:2006-09-15
如果你说的嵌套不是指的Spring中的嵌套传播行为,那就不正确了。如果是指的Spring中的嵌套传播行为,基本正确。不过都无所谓了,你知道Service上设置事务能满足你的应用需求就可以了。
|
|
| 返回顶楼 | |
|
最后更新时间:2006-11-14
其实spring在services层设置了事务,在dao层执行save,update等方法时,会判断当前线程是否处于事务当中,如果处于事务当中则 dao层不执行事务,否则启动事务。
|
|
| 返回顶楼 | |





