Spring 事务支持

spring对事务的支持

1. 编程式事务,声明式事务,基于注解的事务。编程式事务能提供更好的控制颗粒度,精确定位事务的边界。而声明式事务利于用户将操作和事务规则解耦。
  
  
  

事务管理器

spring本身不直接管理事务,而是通过事务管理器TransactionManger将事务管理委托给JTA或者其他持久化机制提供的平台的相关的事务实现。比如支持JDBC的 DataSourceTransactionManager,hibernate的HiberbnateTransactionManager。


声明式事务

声明式事务是通过spring AOP框架实现的。以前声明式事务只能通过aop和TransactionProxyFactoryBean的代理bean来实现声明式事务(已经淘汰)。现在更好的是通过spring的tx命名空间和@Transactional注解。
声明性事务的属性
spring对声明性事务设置了5种属性:传播行为,隔离级别,只读,事务超时,回滚规则。
传播行为:propagation PROPAGATION_REQUIRED, PROPAGATION_REQUIRED_NEW, PROPAGATION_SUPPORTS, 
PROPAGATION_NOT_SUPPORTED(挂起),PROPAGATION_MANDATORY(异常),
PROPAGATION_NEVER(异常),PROPAGATION_NESTED(子事务)
事务隔离级别:isolation
脏读,不可重复读,幻读。
ISOLATION_DEFAULT, ISOLATION_READ_UNCOMMITTED, ISOLATION_READ_COMMITTED,
ISOLATION_REPEATABLE_READ, ISOLATION_SERIALIZABLE
只读: readOlny
如果事务对后端的数据只进行只读操作,数据库会利于事务的只读特性进行优化。
事务超时:
事务多久时间运行完
回滚规则:rollbackfor ,norollbackfor
哪些异常会导致事务回滚,哪些不会。默认情况下,运行期异常导致回归,检查型异常不会。

xml中配置声明式事务
<tx:advice id="txadcice" transaction-manager="txManager">
  <tx:attributes>
    <tx:method name="log*", propagation="REQUIRED", read-only="true"/>
  </tx:attributes>
</tx:advice>
<aop:config>
  <aop:advice ref="txadvice" pointcut="execution=(* com.csy.*.*(..))"
</aop:config>

基于注解的声明式事务
<tx:annotation-driven  transaction-manager="txManger"/>
@Transactional  类级别和方法级别
@Transational, @Tranactional(propagation= ,readOnly= , isolation= ,rollbackFor=, noRollbackFor=,)

编程式事务(了解)

在业务类中注入TransanctionTemplate,调用TransanctionTemplate的execute(TransactionCallback callback)方法。在TransactionCallback 对象的doInTransaction方法中写业务方法。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值