DEFAULT | 使用当前数据库默认的隔离级别。 |
READ_UNCOMMITD | 在一个事务里可以读取到另一个事务未提交的数据,会产生脏读、不可重复读、幻读。 |
READ_COMMITTED | 只有当一个事务提交后,才能被另一个事务读取到数据,不会产生脏读,会产生不可重复读、幻读。 |
REPEATABLE_READ | 实现了READ_COMMITTED级别,而且一个事务读取了数据,另一个事务不允许修改。不会产生脏读、不可重复读,会产生幻读。 |
SERIALIZABLE | 要求事务按照顺序执行,不会产生脏读、不可重复读、幻读,性能极差严重影响性能。 |
REQUIRED | 必须要在事务下执行,如果当前存在事务则加入该事务,否则创建新的事务执行。例如: A方法调用B方法,A方法已经在事务下了,调用B的时候,B会加入到A的事务中,处于同一事务下,如果出错所有的操作都将回滚。 |
SUPPORTS | 当前如果存在事务则加入该事务,如果没有就不用事务执行。 |
MANDATORY | 必须要在事务下执行,如果当前存在事务则加入该事务,如果不存在事务则抛异常。 |
REQUIRES_NEW | 必须要在一个新的事务下执行,如果当前存在事务,则会创建新的事务执行,如果出现错误不会回滚其它事务。例如:A调用B,B出错不会导致A事务数据回滚。 |
NOT_SUPPORTED | 不能在事务下执行,如果当前存在事务则把当前事务挂起。 |
NEVER | 不能在事务下执行,如果当前存在事务则抛异常。 |
NESTED | 如果当前存在事务,则会创建新的事务执行。具体的这个我也不是怎么清楚,很少用到。 |