spring注解:@Transactional使用简介

@Transactional 是 Spring 框架提供的声明式事务管理的一个核心注解,主要用于对方法进行事务管理。它能够确保方法在执行过程中的多个操作要么全部成功,要么全部失败。这种事务管理方式可以简化开发人员编写事务管理代码的工作量,提高开发效率。

  1. 作用范围@Transactional 注解可以应用于方法或类上。如果应用于方法上,仅对被注解的方法提供事务管理;如果应用于类上,则对类中的所有方法提供事务管理。

  2. 事务传播行为@Transactional 注解的 propagation 属性可以指定事务的传播行为。常见的传播行为有:

    • Propagation.REQUIRED:默认值,如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。
    • Propagation.REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则挂起当前事务。
    • Propagation.SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式执行。
    • 其他传播行为还包括:Propagation.MANDATORYPropagation.NOT_SUPPORTEDPropagation.NEVERPropagation.NESTED
  3. 事务隔离级别@Transactional 注解的 isolation 属性可以指定事务的隔离级别。常见的隔离级别有:

    • Isolation.DEFAULT:使用后端数据库的默认隔离级别。
    • Isolation.READ_UNCOMMITTED:最低的隔离级别,允许读取未提交的数据。
    • Isolation.READ_COMMITTED:保证读取到的数据是已经提交的数据。
    • Isolation.REPEATABLE_READ:保证在一个事务中,多次读取同一数据的结果是一致的。
    • Isolation.SERIALIZABLE:最高的隔离级别,完全串行执行事务。
  4. 事务超时时间@Transactional 注解的 timeout 属性可以指定事务的超时时间(以秒为单位)。如果事务在指定的时间内没有完成,将被自动回滚。

  5. 只读属性@Transactional 注解的 readOnly 属性可以指定事务是否为只读。如果设置为 true,则事务将被标记为只读,这有助于提高数据库性能。

  6. 回滚规则@Transactional 注解的 rollbackFornoRollbackFor 属性可以指定哪些异常会导致事务回滚,哪些异常不会。

  7. 事务管理器@Transactional 注解的 transactionManager 属性可以指定使用的事务管理器(例如:PlatformTransactionManager)的名称。

以下是一个简单的示例,展示如何在 Spring 应用程序中使用 @Transactional 注解:

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class UserService {

    @Transactional
    public void addUser(User user) {
        // 插入用户信息到数据库
    }

    @Transactional(readOnly = true)
    public User getUser(Long id) {
        // 根据 ID 查询用户信息
    }
}

在这个示例中,addUser 方法和 getUser 方法都被 @Transactional 注解修饰,分别表示添加用户操作需要事务支持,而查询用户操作是只读的。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值