Spring-事务管理
事务回顾
事务的四个特征:ACID
- 原子性
- 一致性
- 隔离性
- 持久性
不考虑事务的隔离性,会出现以下问题:
Spring为业务层提供了整套的事务解决方案
三个核心对象:
PlatformTransactionManager:平台事务管理接口
TransactionDefinition:
TransactionStatus:
1.PlatformTransactionManager:平台事务管理接口
平台事务管理实现类:
- DataSourceTransactionManager 适用于Spring JDBC或Mybatis
- HibernateTransactionManager 适用于Hibernate3.0及以上版本
- JpaTransactionManager 适用于JPA
- JdoTransactionManager 适用于JDO
- JtaTransactionManager 适用于JTA
JPA(Java Persistence API) :为POJO提供持久化标准规范,并规范了持久化开发的统一API,符合JPA规范的开发可以在不同的JPA框架下运行。
JDO(Java Data Object ):是Java对象持久化规范,用于存取某种数据库中的对象,并提供标准化API。与JDBC相比,JDBC仅针对关系数据库进行操作,JDO可以扩展到关系数据库、文件、XML、对象数据库(ODBMS)等,可移植性更强
JTA(Java Transaction API):允许应用程序执行分布式事务处理。。与JDBC相比,JDBC事务则被限定在一个单一的数据库连接,而一个JTA事务可以有多个参与者,比如JDBC连接、JDO 都可以参与到一个JTA事务中
1.PlatformTransactionManager接口定义的基本操作:
获取事务: getTransaction(TransactionDefinition definition)
提交事务: commit(TransactionStatus status)
回滚事务: rollback(TransactionStatus status)
2.TransactionDefinition接口定义了事务的基本信息:
- 获取事务的名称: String getName()
- 获取事务的读写名称:boolean isReadOnly()
- 获取事务的隔离级别:int getIsolationLevel()
- 获取事务的超时时间:int getTimeout()
- 获取事务的传播行为特征:int getPropagationBehavier()