那得看事务传播属性
propagation 即为事务传播属性,为“REQUIRED”时,A调用B,若A已经有事务,则B也加入该事务中;若A没有事务,则B新建一个事务;
为“SUPPORTS”时,A调用B,若A已经有事务,B也有事务;若A没有事务,则B也不启动事务。
所以,控制在service层,service里调用了dao,配置propagation="REQUIRED"就可以把事务传播到 dao 层。
下面是我配置的hibernate事务
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
说明:
1.事务必须得有事务管理器来管理(须指定sessionFactory属性,指管理哪个连接)
2.定义adivce,
其中 name 指那些方法应用事务,propagation 指事务传播属性,
3.再通过aop织入