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

声明式事务,控制在service层service里调用了dao这时dao在不在事务控制范围内?... 声明式事务,控制在service层
service里调用了dao
这时dao在不在事务控制范围内?
展开
 我来答
百度网友5ca104357
2010-03-05 · TA获得超过2595个赞
知道小有建树答主
回答量:874
采纳率:100%
帮助的人:1376万
展开全部
那得看事务传播属性
<tx:method name="update*" propagation="REQUIRED"/>
propagation 即为事务传播属性,为“REQUIRED”时,A调用B,若A已经有事务,则B也加入该事务中;若A没有事务,则B新建一个事务;
为“SUPPORTS”时,A调用B,若A已经有事务,B也有事务;若A没有事务,则B也不启动事务。

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

下面是我配置的hibernate事务

<beans xmlns="http://www.springframework.org/schema/beans"
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">

<!-- 值班管理模块 -->
<bean id="sessionFactory_zbgl" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate-zhibanguanli.cfg.xml</value>
</property>
</bean>

<!-- Hibernate事务管理配置 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory_zbgl"></property>
</bean>
<tx:advice id="tx" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="insert*" propagation="REQUIRED"/>
<tx:method name="save*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="pc" expression="execution(* com.richwayAppService.fangxun.zhibanguanli.business.impl.*.*(..))"/>
<aop:advisor advice-ref="tx" pointcut-ref="pc"/>
</aop:config>
<!-- Hibernate事务管理配置结束 -->
</beans>

说明:
1.事务必须得有事务管理器来管理(须指定sessionFactory属性,指管理哪个连接)
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory_zbgl"></property>
</bean>
2.定义adivce,<tx:advice>,<tx:method name="update*" propagation="REQUIRED"/>
其中 name 指那些方法应用事务,propagation 指事务传播属性,
3.再通过aop织入 <aop:config>(具体配置意思请自查)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式