您的位置:首页 > 编程语言 > Java开发

我的spring 事务管理学习笔记(一)

2017-03-27 19:54 190 查看
1、事务的基本特性:

原子性:原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。

一致性:一致性指事务前后数据的完整性必须保持一致。

隔离性:隔离性指多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离。

持久性:持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,即使数据库发生故障也不应该对其有任何影响。

2、不考虑隔离性,会引发安全问题:

脏读:一个事务读取了另一个事务改写但还未提交的数据,如果这些数据被回滚,则读到的数据是无效的。

不可重复读:在同一事务中,多次读取同一数据返回的结果有所不同。

幻读:一个事务读取了几行记录后,另一个事务插入一些记录,幻读就发生了。再后来的查询中,第一个事务就会发现有些原来没有的记录。

3、事务的隔离级别(Isolation)(org.springframework.transaction.annotation.Isolation)

   

MySQL默认采用REPEATABLE_READ隔离级别。

4、事务的传播行为(Propagation)(org.springframework.transaction.annotation.Propagation)

1.一个事务的方法A,一个标记事务传播属性为Required的方法B,B如果在方法A内,则方法B的事务只能用作回滚并且跟方法A是同一个事务

2.标记事务传播属性为RequiresNew的方法B,B如果在方法A内,则方法B的事务完全独立于方法A的事务,方法B的事务具有提交以及回滚性,即使方法A之后有回滚都不 影响方法B的事务

3.标记事务传播属性为Nested的方法B,B如果在方法A内,则方法B的事务则具有多个保存点的回滚,但这不影响A的事务的进行,这个设置通常映射到JDBC保存点,所以 只在jdbc的事务中有效。

关于事务的传播行为,详情见http://blog.csdn.net/it_man/article/details/5074371

5、spring的事务管理高层抽象主要包括3个接口

(1)、PlatformTransactionManager 事务管理器

(2)、TransactionDefinition 事务定义信息(隔离级别,传播行为,超时,只读)

(3)、TransactionStatus 事务具体运行状态
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: