首先我们先要了解什么是Spring 事务管理
? ? ? 在实际开发中,操作数据库时都会涉及到事务管理问题,为此Spring提供了专门用于事务处理的API。Spring的事务管理简化了传统的事务管理流程,并且在一定程度上减少了开发者的工作量。
事务的特性(ACID)
事务具有4个基本特性:原子性、一致性、隔离性、持久性。也
就是我们常说的ACID原则。
1.原子性(Atomicity):一个事务已经是一个不可再分割的工作单位。事务中的全部操作要么都做;要么都不做,
2.一致性(Consistency):事务的执行使数据从一个状态转换为另一个状态,但是对于整个数据的完整性保持稳定。
3.隔离性(Isolation):事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性和完整性。同时,并行事务的修改必须与其他并行事务的修改相互独立;
4.持久性(Durability):一个事务一旦提交,它对数据库中数据的改变会永久存储起来。其他操作不会对它产生影响.
Spring 事务传播行为
Spring事务的传播属性
事务的隔离级别
spring事务的配置方式
spring 在事务处理上支持编程式事务和声明式事务
1. 编程式事务管理
编程式事务管理是侵入性事务管理,使用TransactionTemplate或者直接使用PlatformTransactionManager,对于编程式事务管理,Spring推荐使用TransactionTemplate。
2. 声明式事务管理
声明式事务管理建立在AOP之上,其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,执行完目标方法之后根据执行的情况提交或者回滚。
编程式事务每次实现都要单独实现,但业务量大功能复杂时,使用编程式事务无疑是痛苦的,而声明式事务不同,声明式事务属于无侵入式,不会影响业务逻辑的实现,只需要在配置文件中做相关的事务规则声明或者通过注解的方式,便可以将事务规则应用到业务逻辑中。
显然声明式事务管理要优于编程式事务管理,这正是Spring倡导的非侵入式的编程方式。唯一不足的地方就是声明式事务管理的粒度是方法级别,而编程式事务管理是可以到代码块的,但是可以通过提取方法的方式完成声明式事务管理的配置。
Spring事务的实现
1.通过注解方式:
Spring配置类SpringConfiguration
配置类JdbcConfig
业务层
测试代码
运行结果
2.通过xml方式
(1)导入AOP相关坐标
(2)创建类
创建dao接口和实现类
在com.cqgcxy.dao包下创建目标接口AccountDao
创建目标类PhoneServiceImpl和接口
测试代码
资料链接:https://blog.csdn.net/donggua3694857/article/details/69858827
https://blog.csdn.net/weixin_43887870/article/details/120074761