事务总结

事务的属性
 Propagation_Nested:spring自己增加一个额外的Propagation_Nested属性,该属性告诉spring

对事务进行嵌套处理使用required属性,当然数据库底层必须要支持嵌套事务
 Required:如果当前存在一个事务就使用当前事务,否则将新开一个事务。
 Mandatory:告诉容器必须要一个事务才能执行,如果没有将抛出

TransactionRequiredException
 RequiredNew:告诉容器开始一个新的事务,如果之前有事务则挂起。当新事务执行完毕,挂起

事务将继续执行。(日志)
 Supports指定方法不需要事务来执行,如果有事务则会使用该事务
 NotSupported:告诉容器指定方法不需要事务,如果有事务存在,该事务会被挂起,知道方法结

束。
 Never:告诉容器该方法永远不能再事务里执行,如果有则抛出异常
ReadUncommit:读取到未commit的数据叫---脏读。
ReadCommit:并发访问数据,没有读到未提交的的数据幻影读。
RepeatableRead:在一个事务里查询的结果都是一样的,叫可重复读
Serializable:一个时刻只能有一个事务能读取,执行。
两阶段提交(Two-Phase)
 两阶段提交协议(2pc)是XA在全局事务中协调多个资源时采用的架构。
第一阶段为:准备阶段与提交阶段,当一个commit请求从客户端发送到事务管理器时,第一阶段,所有的

资源都会被询问是否已经准备好提交它们的事务,此时每个参与资源都可以被回复,Ready,Ready_Only

,Not_Ready这三种响应,如果在阶段一里任何一个资源回复Not_Ready响应,当前整个事务都会被回滚。

只有当所有的资源都回复Ready响应,当前事务才进入第二阶段的提交处理。如果参与者回复了Read_Only

作为响应,该参与者将不会进入阶段二的处理过程中,它将会被忽略

你可能感兴趣的:(spring)