数据库与spring事务特性(4种)
数据库与spring事务的分别有四大特性并且相同:
#原子性(atomicity):强调事务的不可分离.
#一致性(consistency):事务的执行的前后数据的完整性保持一致.
#隔离性(isolation):一个事务执行的过程中,不应该受到其他事务的干扰.
#持久性(durability):事务一旦结束,数据就持久到数据库.
不考虑事务隔离级别引发的安全性问题:
#脏读:一个事务读到了另一个事务的未提交数据;
#不可重复读:一个事务读到了另一个事务已经提交的 更新的数据(update) 导致多次查询结果不一致;
#幻读:一个事务读到了另一个事务已经提交的 插入的数据(insert) 导致多次查询结果不一致;
事务的隔离级别(5种)
#(default)默认的隔离级别,使用数据库默认的事务隔离级别.
#(read uncommited)读未提交: 脏读,不可重复读,幻读,都有可能发生
#(read commited)读已提交:避免脏读,但是不可重复读和幻读有可能发生
#(repeatable read)可重复读:避免脏读和不可重复读,但是幻读有可能发生
#(serialiable)串行化:避免所有读问题
#MySQL默认:可重复读
#Oracle默认:读已提交
事务的传播行为(7种)
#保证在同一个事务中
#支持当前事务,如果不存在,就新建一个(默认);
#支持当前事务,如果不存在,就不使用事务;
#支持当前事务,如果不存在,抛出异常;
#保证没有在同一个事务中
#如果事务存在,挂起当前事务,创建一个新的事务;
#以非事务方式运行,如果有事务存在,挂起当前事务
#以非事务方式运行,如果有事务存在,抛出异常
#如果当前事务存在,则嵌套事务执行