事务的特性:
1.原子性
2.一致性
3.隔离性
4.持久性
事务的隔离级别:
从低到高依次为 未提交读、提交读、可重复读和串行读。
1.读未提交
可能会导致脏读。
2.读提交
可能会导致不可重复读。
3.可重复读
可能会导致幻读。
4.串行读
可避免以上问题,但牺牲效率。
事务的传播属性:
PROPAGATION_REQUIRED -- 支持当前事务,如果当前没有事务,就新建一个事务。父事务与子事务只要有一个失败,就全部回滚。
PROPAGATION_SUPPORTS -- 支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY -- 支持当前事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW -- 新建事务,如果当前存在事务,把当前事务挂起。父事务与子事务相互独立运行,互不影响。
PROPAGATION_NOT_SUPPORTED -- 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER -- 以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED -- 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。