spring事物 (mu课)

1.什么是事物,

事物指在逻辑上的一组操作,这组事物要么全部成功,要么全部失败

2.事物的的特性:

原子性:事物是不可分割的单位,要么都发生,要么都不发生

一致性;指事物前后数据完整性必须保持一致

隔离性;多个用户并发访问的时候,一个用户的事物不能被其他用户干扰

持久性:一个事物被提交了,它对数据库的数据的修改是持久性的

3.spring事物管理的三个接口

3.1  PlatformTransactionManager   事物管理器

*rollback(TransactionStatus )

*commit(TransactionStatus )

*getTransation(TransactionDefinition)

3.2  TransactionDefinition事物定义信息(隔离,超时,只读,传播)

3.3  TransactionStatus 事物具体运行状态

4.隔离级别

READ_UNCOMMITED    允许你读取还未提交的数据,可能导致脏,幻,不可重复读

READ_COMMITTED 允许在并发事物已经提交后读取,但幻读和不可重复读依旧可能发生

REPEATABLE_READ 对相同字段的多次读取时一致的,除非数据被事物本身改变,但是幻读依旧可以发生,可以防脏读和不可重复读

SERIALIZABLE 可确保不发生脏,幻,不可重复读

5.不考虑隔离性,会发生的安全问题如下

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

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

幻读:一个事物读取了几行记录后,另外一个事物插入的一些记录,幻读就发生了

           再后来的查询中,第一个事物就会发生有些原来没有的记录

6.事物应该在放置在哪层中

业务层

7.业务的传播行为

事物的传播行为:解决了业务层方法之间的相互调用的问题

propagation_supports  如果aaa里面有事物,则bbb调用aaa的事物,如果aaa无事物,则bbb方法就不调用了

Propagation_required 如果aaa里面有事物,则bbb就调用aaa里面的事物,否则bbb就创建一个事物,然后把AAA内容包裹进去,即是两者在一个事物中

Propagation_required_new 如果aaa里面有事物,则bbb就把aaa事物挂起,自己在创建一个新的事物,两者不是在一个事物

原文地址:https://www.cnblogs.com/libaowen609/p/12819676.html