Spring

事务管理
  事务的概念
  Spring 事务管理模块的特点
  声明方式的事务管理
------------------------
事务的概念:
 价值:
  保证原子操作,并发,网络或机器故障
 事务的特性:
  原子性(Atomic)
  一致性(Consistent)
  隔离性(Isolated)
  永久性(Durable)

Spring 事务管理模块的特点:
 1)多种平台事务管理器:
   DataSourceTransactionManager
    依赖 DateSource
   HibernateTransactionManager
    依赖 SessionFactory
 2)两种定义事务边界的方式:
   编程方式:通过程序代码控制
   声明方式:通过XML或者标注声明


声明方式的事务管理
 五种事务属性选项:
  传播  :事务的嵌套规则
       PROPAGATION_REQUIRED
       PROPAGATION_SUPPORTS
  只读  :用于暗示底层存储的优化
       readOnly
  回滚条件:在方法抛出异常后事务是否回滚
       缺省时,事务只在方法抛出Unchecked Exception 回滚 
  隔离  :四种级别,定义事务数据的独立性
       ISOLATION_READ_UNCOMMITTED,ISOLATION_READ_COMMITTED
       ISOLATION_REPEATABLE_READ , ISOLATION_SERIALIZABLE
  超时  :事务最长等待时间

  传播属性是必须的,其他可选

 三种实施方式:
  方式一 :使用 TransactionProxyFactoryBean 生成代理(见API DOC)

  方式二 :使用 Spring2 引入的 tx 及 aop 命名空间
   示例:
    先定义事务 advice
    <tx:advice id="txAdvice" transaction-manager="txManager">
     <tx:attributes>
      <tx:method name="update*" propagation="REQUIRED" />
      <tx:method name="*" propagation="SUPPORTS" read-only="true"/>
     </tx:attributes>
    </tx:advice>
    再通过aop织入
    <aop:config>
     <aop:advisor
       pointcut="execution(* *..BankService.*(..))"
       advice-ref="txAdvice"/>
    </aop:config>

  方式三 :使用 标注
   示例:
    首先,xml 声明:
    <tx:annotation-driven transaction-manager="txManager" />
    然后,在类或方法上标注:
    @Transactional(propagation=Propagation.SUPPORTS, readOnly=true)
    public class BankServiceImpl implements BankService {
     …
      @Transactional(propagation=Propagation.REQUIRED, readOnly=false)
      public void open(Account a) {
        …
      }
     …
    }
    此标注也可以用于接口及接口的方法上

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值