关于事务的一些总结



事务的定义和特性:
 事务是应用程序中的一系列严密的操作,当中只要某个操作出错,那么在每个操作中所作的所有更改都会被撤消,只有全部步骤完成才算成功。
 ACID事务四大特性: 原子性、一致性、隔离性、持久性
 原子性:事务的操作要么全部成功,要么全部回滚。
 一致性:事务必须使数据从一个数据一致性转换到另外一个一致性状态,也就是事务执行之前和事务执行之都保持一致性状态。 比如转账。
 隔离性:多个用户访问数据库,需要为每个用户创建事务,执行某个事务的时候不会被别的事务干扰,多个事务之间相互隔离。
 持久性:是指事务一旦提交,数据在数据库的改变是永久性的,即便数据库发生故障也不会丢失事务提交的操作。
 
一:事务分为:编程试事务和声明式事务
 声明式事务可以在配置文件配置事务规则声明或者使用注解Transational进行事务声明;
 好处:是不用在代码掺杂事务管理的代码,避免了编程式事务;
 缺点:是声明式事务只能作用到方法级别,而编程式事务可以作用到代码块级别;
 解决:将需要用到事务的代码块独立为单个的方法;


二:事务的七大传播行为:
 REQUERIED 
 REQUERIES_NEW
 SUPPORTS
 NOT_SUPPORTED
 NEVER
 MANDATORY
 NESTED 如果存在当前事务,就在嵌套事务执行,否则和REQUERIED类似的操作。
 
@Transactional(propagtion=Propagation.REQUERIED)
三:事务的四大隔离性:
 READ_COMMITED :读取已提交事务的数据(可能会不可重复读取,和幻读)
 READ_UNCOMMITED:读取未提交的数据(级别最低,会出现脏读,不可重复度)
 REPEATABLE_READ :可重复读取(可能会出现脏读)
 SERIALIZABLE  :是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。
 
 @Transactional(isolation=Isolation.READ_COMMITED)


四:java实现事务管理常用两种方式
1.通过配置事务规则声明 2.通过注解@Transactional 


1)导入tx命名空间


2)配置事务管理器
 <bean id="managerId" class=".." >
  <property name ="sessionFactory" ref="sessonFactory"/>
 </bean>  
 ------------------------
 注解方式的话 
 <tx:annotation-driven tansaction-manager="managerId" proxy-target-class="ture"/>
3)配置事务传播 advice
<tx:adivce id="adivceId" transaction-manager="managerId">
<tx:atributes>
 <tx:method name="add*" popagation="REQUERIRE"/>
 。。。
</tx:atributes>
</tx:adivce>
4)配置事务切点 aop poitcut
 <aop:config>
  <aop:poitcut  execution(* com.zyshen..*.*(..)) id="cutId"/>
  <aop:advisor advice-ref="adviceId" poitcut-ref="cutId"/>
 </aop:config>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值