事务机制: 假设Service1中的A方法调用Service2中的B方法.
隔离机制 | 说明 |
---|---|
required | 如果A有事务,则B直接加入事务中,否则B会新建一个事务 |
spports | 如果A有事务,则B加入事务执行,否则,B以非事务方式执行 |
not-supported | 不管有没有事务,都以非事务方式执行 |
requires-new | 不管A是否有事务,B都会新建一个事务 ,并把原来的事务挂起.新的事务提交之后才会提交原来的事务 |
never | 必须在一个非事务中执行,如果A有事务,B则会抛异常 |
mandatory | 必须在一个已有事务中执行,如果A没有事务,则B会抛异常 |
nested | 如果A有事务,则B会创建一个嵌套事务,并以一个事务进行提交;如果没有事务,会按照required的方式去执行 |
隔离级别
①读未提交:读到了未提交的数据(脏读)
②读已提交:读到了已提交的数据(对应不可重复读Oracle默认的隔离级别)
③可重复读:解决了不可重复读的问题(MySQL默认的隔离级别)
④串行化:Serializable解决了所有问题(单线程,极端化不能用)
注:以上内容是根据一些资料以及自己的理解进行编写,如有不对,欢迎指正.