Spring的事务

原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

使用方式

编程式事务

TransactionTemplate:

transactionTemplate.execute(new TransactionCallback<Boolean>){

 @Override

 public Boolean doInTransaction(TransactionStatus status){

}

}

PlatformTransactionManager

DefaultTransactionDefinition:

defaltTransactionDefinition.setReadOnly(false);

defaltTransactionDefinition.setIsolationLevel(TransactionDefinition.xxx)

defaltTransactionDefinition.setPropagationBehavior(TransactionDefinition.xxx)

TransactionStatus status = transactionManager.getTransaction(def);

try{

     transactionManager.commit(status)

}catch(Exception e){

 transactionManager.rollback(status);

}

声明式事务

AOP(面向切面编程)

<aop:config>

<aop:pointcut id="id" expression="" />

<aop:advisor pointcut-ref="id" advice-ref="advice">

</aop:config>

<tx:advice id="advice">

<tx:attributes>

<tx:method name="get*" read-only="true"/>

</tx:attributes>

</tx:advice>

IoC(控制反转)

@Transactional

事务传播的类型

  1. PROPAGATION_REQUIRED。默认,如果有事务则加入,没有则新建。
  2. PROPAGATION_REQUES_NEW。有则挂起,当前事务先执行,然后执行挂起的事务,没有则只执行当前事务。
  3. PROPAGATION_SUPPORT。如果有事务则加入,没有则以非事务方式提交。
  4. PROPAGATION_NOT_SUPPORT。不支持事务,如果有事务则将其挂起,执行当前程序,没有则直接执行程序,异常情况下不会回滚。
  5. PROPAGATION_NEVER。不支持事务,有事务则抛出异常。
  6. PROPAGATION_MANDATORY。如果没有事务则抛出异常。
  7. PROPAGATION_NESTED。保存状态保存点,各自独立回滚。

事务隔离级别

  1. ISOLATION_DEFAULT。使用后端默认的隔离级别。
  2. ISOLATION_READ_UNCOMMITED。允许未提交读,可能导致脏读(没提交的变更被读取)、幻读(一个事务修改全部数据,一个事务新增数据,发现没有全部修改)、不可重复度(事务对同一条件的数据读取两次,两次结果不一样,过程中有事务修改记录)。
  3. ISOLATION_READ_COMMITED。提交读,存在幻读和不可重复读。
  4. ISOLATION_REPEATABLE_READ.可重复读,可防止脏读和不可重复读,有可能发生幻读。
  5. ISOLATION_SERIALIZABLE.序列化,可防止不发生脏读,不可重复读,幻读。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值