Spring事务:

事务逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败。

事务四大特性ACID:

原子性 (Atomicity 英 /,ætə’mɪsɪtɪ/ ):强调事务的不可分割。

一致性 (Consistency /kən’sɪst(ə)nsɪ/ ):事务执行前后,数据完整性保持一致。

隔离性 (Isolation 英 /aɪsə’leɪʃ(ə)n/):事务执行过程中,不受到其他事务干扰。

持久性(Durability /,djʊrə’bɪləti/ ) :事务一旦结束,数据就持久到数据库。

事务并发操作带来的安全性问题:

脏读 :一个事务读到另一个事务的未提交数据。

不可重复读 :一个事务读到另一个事务已提交的update数据,导致多次查询结果不一致。

虚幻读 :一个事务读到了另一个事务已提交的insert数据,导致多次查询结果不一致。

丢失更新: 一个事务的更新覆盖了另一个事务的更新。

解决读问题: 设置事务的4种隔离级别,由低到高依次为:

未提交读(read uncommitted):最低的事务隔离级别,允许另一事务看到此事务未提交的数据。脏读,不可重复读,虚读都有可能发生。

已提交读 (read committed /kə’mɪtɪd/):Sql Server、Oracle默认的隔离级别,保证一个事物提交后才能被另一个事务读取。避免脏读,但不可重复读和虚读有可能发生。

可重复读 (repeatable read /rɪ’pitəbl/ ) :Mysql 默认的隔离级别,避免脏读和不可重复读,但虚读有可能发生。

串行化(serializable [ˈsɪərɪəlaɪzəbl]) :事务被处理为顺序执行,最高事务隔离级别,代价也高。避免以上所有读问题。

DEFAULT 是一个PlatfromTransactionManager (平台编程式事务管理器)默认的隔离级别,使用数据库默认的事务隔离级别

事务隔离级别_油性皮肤隔离霜好还是隔离乳好_事务隔离机制

事务的七大传播行为

PROPAGION_XXX :事务的7种传播行为

* 保证同一个事务中

PROPAGATION_REQUIRED 支持当前事务,如果不存在 就新建一个(默认)

PROPAGATION_SUPPORTS 支持当前事务事务隔离级别,如果不存在,就不使用事务

PROPAGATION_MANDATORY 支持当前事务,如果不存在,抛出异常

* 保证不在同一个事务中

PROPAGATION_REQUIRES_NEW 如果有事务存在事务隔离级别,挂起当前事务,创建一个新的事务

PROPAGATION_NOT_SUPPORTED 以非事务方式运行,如果有事务存在,挂起当前事务

PROPAGATION_NEVER 以非事务方式运行,如果有事务存在,抛出异常

PROPAGATION_NESTED 如果当前事务存在,则嵌套事务执行,前提是数据库支持才行。

限时特惠:本站每日持续更新海量设计资源,一年会员只需29.9元,全站资源免费下载
站长微信:ziyuanshu688