tx事务
为什么配置事务?
答案:事务是为解决数据安全操作提出的,事务控制实际上就是控制数据的安全访问。例如A用户向B用户转账100元,再转账过程中出现了错误,这个时候就应该体现出事务的原子性,即A和B用户的账户余额均未发生改变,回退到未转账前。
1、<tx:advice id="tv" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
2、事务advice的管理者为transactionManager,你从配置文件中应该能够找到一个id为transactionManager的bean,而这个advice中规定了save方法的传输方式为required,也就是说没有sessionfactory的时候会自动建立,有的时候就不会建立了。当然了这只是规定了一个advice,你还需要指定一个aop:pointcut去引用他,
例如<aop:config>
<aop:pointcut id="bussinessService"
expression="execution(public * x.y..*.*(..))" />
<aop:advisor pointcut-ref="bussinessService"
advice-ref="tv" />
</aop:config>
这样这个advice就被联系到了bussinessService这个pointcut上了
Spring事务的传播属性有以下几种:
Propagation.REQUIRED:表示当前方法必须运行在一个事务环境当中,如果当前方法已处于事务环境中,则可以直接使用该方法;否则会开启一个新事务后执行该方法------常用
Propagation.NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与Propagation.REQUIRED类似的操作。
Propagation.REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。
Propagation.SUPPORTS:如果当前方法处于事务环境中,则使用当前事务,否则不使用事务
Propagation.MANDATORY:使用当前的事务,如果当前没有事务,就抛出异常。

浙公网安备 33010602011771号