java编程,ssh结构,用了spring声明式事务,有点问题

2024-12-20 07:30:19
推荐回答(1个)
回答1:

那得看事务传播属性

propagation 即为事务传播属性,为“REQUIRED”时,A调用B,若A已经有事务,则B也加入该事务中;若A没有事务,则B新建一个事务;
为“SUPPORTS”时,A调用B,若A已经有事务,B也有事务;若A没有事务,则B也不启动事务。

所以,控制在service层,service里调用了dao,配置propagation="REQUIRED"就可以把事务传播到 dao 层。

下面是我配置的hibernate事务

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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">




classpath:hibernate-zhibanguanli.cfg.xml






















说明:
1.事务必须得有事务管理器来管理(须指定sessionFactory属性,指管理哪个连接)



2.定义adivce,
其中 name 指那些方法应用事务,propagation 指事务传播属性,
3.再通过aop织入 (具体配置意思请自查)