Spring事务简介
什么是事务?
事务是正确执行一系列的操作(或行为),使得数据库从一种状态转换成另一种状态,且保证操作全部成功,或者全部失败
事务原则?
事务必须服从ISO/IEC所制定的ACID原则
- 原子性(Atomicity):不可分割性,事务要么全部被执行,要么全部不执行
- 一致性(Consistency):事务的执行使得数据库从一种正确状态转换成另一种正确状态
- 隔离性(Isolation):在事务正确提交之前,其它事务不能获取该事务可能的结果
- 持久性:事务正确提交后,其结果将永久保存到数据库中
Java事务的产生
在Java编写的程序或系统,实现ACID操作时,需要事务来确保逻辑被正确的执行
Java事务实现
- 通过JDBC相应方法间接来实现对数据库的增、删、改、查,把事务转移到Java程序代码中进行控制
- 确保事务=>要么全部执行成功,要么撤销不执行
总结: Java事务机制和原理就是操作确保数据库操作的ACID特性
Java事务实现模式
通过Java代码来实现对数据库的事务性操作
Java事务类型
- JDBC事务:用Connection对象控制的手动模式和自动模式
- JTA(Java Transaction API)事务:与实现无关的,与协议无关的API
- 容器事务:应用服务器提供的,且大多是基于JTA完成(通常基于JNDI的,相当复杂的API实现)
三种事务的差异
- JDBC事务:控制的局限性在一个数据连接内,但是其使用简单
- JTA事务:功能强大,可跨越多个数据库或多DAO,使用比较复杂
- 容器事务:主要指的是Java EE应用服务器提供的事务管理,局限与EJB应用使用