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:主要就是配置平台事务管理器

配置平台事务管理器

先写一个AccountDao

AccountDao

再写一个AccountService

AccountService

测试

异常测试

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

②注解配置事务

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

service和dao类和xml一样

测试:

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

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

测试类

结果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值