当前位置: 首页>后端>正文

Spring的事务基础学习

1.什么是Spring的事务管理?

在实际开发中,操作数据库时都会涉及到事务管理问题,为此Spring提供了专门用于事务处理的API。Spring的事务管理简化了传统的事务管理流程,并且在一定程度上减少了开发者的工作量。

事务的ACID原则:

事务具有4个基本特性:原子性、一致性、隔离性、持久性。也就是我们常说的ACID原则。

原子性(Atomicity):

一个事务已经是一个不可再分割的工作单位。事务中的全部操作要么都做;要么都不做

一致性(Consistency):

事务的执行使数据从一个状态转换为另一个状态,但是对于整个数据的完整性保持稳定。

隔离性(Isolation):

事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性和完整性。同时,并行事务的修改必须与其他并行事务的修改相互独立。

持久性(Durability):

一个事务一旦提交,它对数据库中数据的改变会永久存储起来。其他操作不会对它产生影响

事务传播行为

* 指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。

| REQUIRED【默认】 | 当前如果有事务,Spring就会使用该事务;否则会开始一个新事务(增、删、改)?

| SUPPORTS? ? ? ? | 当前如果有事务,Spring就会使用该事务;否则不会开始一个新事务(查询)?

| MANDATORY? ? ? ? | 当前如果有事务,Spring就会使用该事务;否则会抛出异常? ? ? ??

| REQUIRES_NEW? ? | 当前如果有事务,把当前事务挂起,新建事务? ? ? ? ? ? ? ? ? ??

| NOT_SUPPORTED? ? | 当前有事务,Spring也会在非事务环境下执行。如果当前有事务,则该事务挂起?

| NEVER? ? ? ? ? ? | 当前有事务,Spring也会在非事务环境下执行。如果当前有事务,则抛出异常?

| NESTED? ? ? ? ? | 当前有事务,则在嵌套事务中执行。如果没有,那么执行情况与REQUIRED一样?

2.Spring事务的实现

①xml方式:

applicationContext.xml:主要就是配置平台事务管理器

Spring的事务基础学习,第1张
配置平台事务管理器

先写一个AccountDao

Spring的事务基础学习,第2张
AccountDao

再写一个AccountService

Spring的事务基础学习,第3张
AccountService

测试

Spring的事务基础学习,第4张

异常测试

Spring的事务基础学习,第5张

报了错误,事务不会让其执行

Spring的事务基础学习,第6张

②注解配置事务

创建一个SpingConfig类:和xml内容一样,不过通过类来配置

Spring的事务基础学习,第7张

service和dao类和xml一样

测试:

@RunWith(SpringRunner.class)让测试在Spring容器环境下执行

@ContextConfiguration(classes = {SpringConfig.class})去读取配置类,让我们需要的service等放在容器里

Spring的事务基础学习,第8张
测试类
Spring的事务基础学习,第9张
结果

https://www.xamrdz.com/backend/3cn1928849.html

相关文章: