1、隔离级别:数据库
数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别能够逐个解决脏读、不可重复读、幻读这几类问题。spa
1. ISOLATION_READ_UNCOMMITTED:这是事务最低的隔离级别,它充许令外一个事务能够看到这个事务未提交的数据。
这种隔离级别会产生脏读,不可重复读和幻像读。
2. ISOLATION_READ_COMMITTED:保证一个事务修改的数据提交后才能被另一个事务读取。另一个事务不能读取该事务未提交的数据
3. ISOLATION_REPEATABLE_READ:这种事务隔离级别能够防止脏读,不可重复读。可是可能出现幻像读。
它除了保证一个事务不能读取另外一个事务未提交的数据外,还保证了避免下面的状况产生(不可重复读)。
4. ISOLATION_SERIALIZABLE:这是花费最高代价可是最可靠的事务隔离级别。事务被处理为顺序执行。
除了防止脏读,不可重复读外,还避免了幻像读。blog
注:隔离级别能够认为是4个,也能够认为是5个,4个就是上面4个,对应着JDBC的隔离级别。若是是若是,就还有一个default,是默认的隔离级别,遵循传播属性。事务
1、传播属性:it
PROPAGATION_REQUIRED -- 支持当前事务,若是当前没有事务,就新建一个事务。这是最多见的选择。
PROPAGATION_SUPPORTS -- 支持当前事务,若是当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY -- 支持当前事务,若是当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW -- 新建事务,若是当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED -- 以非事务方式执行操做,若是当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER -- 以非事务方式执行,若是当前存在事务,则抛出异常。
PROPAGATION_NESTED -- 若是当前存在事务,则在嵌套事务内执行。若是当前没有事务,table