spring 的事务管理

本文介绍了Spring框架中的事务管理机制,包括事务的四大特性(ACID):原子性、一致性、隔离性和持久性,并详细讲解了如何配置Spring的事务管理器及事务通知属性,最后展示了如何通过AOP配置事务切面。

事务有四个特性:ACID

  • 原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。
  • 一致性(Consistency):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败。在现实中的数据不应该被破坏。
  • 隔离性(Isolation):可能有许多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。
  • 持久性(Durability):一旦事务完成,无论发生什么系统错误,它的结果都不应该受到影响,这样就能从任何系统崩溃中恢复过来。通常情况下,事务的结果被写到持久化存储器中。

 事务:要么一起成功,要么一起失败。

事务管理器

 Spring并不直接管理事务,而是提供了多种事务管理器,他们将事务管理的职责委托给Hibernate或者JTA等持久化机制所提供的相关平台框架的事务来实现。 Spring事务管理器的接口是org.springframework.transaction.PlatformTransactionManager,通过这个接口,Spring为各个平台如JDBC、Hibernate等都提供了对应的事务管理器,但是具体的实现就是各个平台自己的事情了。

JDBC事务

      如果应用程序中直接使用JDBC来进行持久化,DataSourceTransactionManager会为你处理事务边界。为了使DataSourceTransactionManager,你需要使用如下的XML将其装配到应用程序的上下文定义中:

1.配置事务管理器。    

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="dataSource" />
</bean>     

实际上,DataSourceTransactionManager是通过调用java.sql.Connection来管理事务,而后者是通过DataSource获取到的。通过调用连接的commit()方法来提交事务,同样,事务失败则通过调用rollback()方法进行回滚。

2.配置事务通知属性

<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
            <tx:method name="enable*" propagation="REQUIRED" />
            <tx:method name="disable*" propagation="REQUIRED" />
            <tx:method name="get*" propagation="REQUIRED" read-only="true" />
            <tx:method name="count*" propagation="REQUIRED" read-only="true" />
            ...
    </tx:attributes>
</tx:advice>

3、配置事务切面 

    <aop:config expose-proxy="true">
        <aop:pointcut id="pointcut_1"
            expression="execution(* com.aaaaa.fffff.sssss..*.service.*.*(..))" />
        <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut_1" />
    </aop:config>

 

转载于:https://my.oschina.net/u/1259702/blog/1604712

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值