Spring 本身并不实现事务,Spring事务的本质,还是底层数据库对事务的支持,没有 数据库事务的支持,Spring事务就不会生效。
spring 事务中指的提交和回滚实际上是对数据库的提交和回滚操作。
spring 事务说白了就是简化了操作数据库事务的步骤:
正常通过jdbc连接数据库,后对事务的操作如下:
获取连接 Connection con = DriverManager.getConnection()
开启事务con.setAutoCommit(true/false);
执行CRUD
提交事务/回滚事务 con.commit() / con.rollback();
关闭连接 conn.close();
使用spring 为我们提供的事务操作:
Spring事务的本质 其实就是 AOP 和 数据库事务,Spring 将数据库的事务操作提取为 切面,通过AOP的方式 增强 事务方法。
当然具体的操作方式可以分为三种,它们都能实现事务:
Spring的编程式的事务管理(说白了就是通过存纯java代码实现)
使用XML配置声明式事务(通过配置文件spring.xml 来实现)
使用注解配置声明式事务(使用注解实现,这种方式最简单,只需要一个注解就能实现,推荐使用)
1、PlatformTransactionManager事务管理器(平台事务管理器)
Spring并不直接管理事务,而是提供了多种事务管理器,它们将事务管理的职责委托给JTA或其他持久化机制所提供的平台相关的事务实现。每个事务管理器都会充当某一特定平台的事务实现的门面,这使得用户在Spring中使用事务时,几乎不用关注实际