1.事务的概念 事务是一组操作的执行单元,相对于数据库的单条操作而言,事务管理的是一组SQL指令,如增删改查等,事务的特性体现在事务内包含的SQL指令必须全部执行成功,如果其
1.事务的概念
事务是一组操作的执行单元,相对于数据库的单条操作而言,事务管理的是一组SQL指令,如增删改查等,事务的特性体现在事务内包含的SQL指令必须全部执行成功,如果其中一条指令发生错误,那么整个事务内的一组操作都要进行回滚。
事务有四个特性:
- 原子性 Atomic ,事务是一个不可再拆分的最小单位,要么整个执行,要么整个回滚.
- 一致性 Consistent,事务要保证数据库整体数据的完整性和业务的数据的一致性,事务成功提交整体数据修改,事务错误则回滚到数据回到原来的状态。
- 隔离性 Isolate,两个事务的执行都是独立的,事务之前不会相互影响,多个事务操作一个对象时会以串行等待的方式保证事务相互之间处于隔离。
- 持久性 Durable,一旦事务成功提交后,数据将会保存到数据库,不能再进行回滚,以后的操作都将在当前数据库状态上继续进行。
2.Spring中的事务控制方式
编程式事务管理
通过手动编码控制事务的边界,可以实现细粒度的事务控制,一般用的较少。
声明式事务管理
只需要在Spring中添加一些配置文件或者使用注解,即可实现将操作纳入事务管理中,事务管理使用了Spring AOP,降低了代码之间的耦合。
3.事务管理器
Spring中并没有直接管理事务,而是将管理事务委托给相应的持久化机制提供的某个特定平台的实现。
事务管理器实现
目标
4.事务属性简介
Spring关于事务的注解中有以下几个属性(部分)
@Transactional( readOnly = false, //读写事务 timeout = -1, //超时 noRollbackFor = ArithmeticException.class //遇到数学异常不回滚 isolation = Isolation.REPEATABLE_READ, //事务隔离级别 propagation = Propagation.REQUIRED //事务传播规则 )
- 是否为只读事务:只读事务不做任何修改,可以优化查询操作。
- 事务超时(单位为秒):事务的最长持续时间,如果该时间内事务一直没有操作或回滚,则系统将自动进行回滚。-1表示不超时,但最终实现需要由底层数据库实现。
- 隔离级别:控制并发访问下数据库的安全性。
- 传播规则:定义事务方法和调用事务方法的方法之间的事务边界。
5.事务传播规则
传播行为
意义
6.事务隔离级别
隔离级别
意义
- 不同的隔离级别采用不同的方式来实现,在四种隔离级别中,Serializable的隔离级别最高,Read Uncommited的隔离级别最低。
- 大多数据库默认的隔离级别为Read Commited,如SqlServer,Oracle
- 当然也有少部分数据库默认的隔离级别为Repeatable_Read ,如Mysql,
- Oracle数据库支持READ COMMITTED和SERIALIZABLE两种事务隔离性级别,不支持READ UNCOMMITTED和REPEATABLE READ这两种隔离性级别。虽然SQL标准定义的默认事务隔离性级别是SERIALIZABLE,但是Oracle数据库默认使用的事务隔离性级别却是READ COMMITTED.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。