当前位置: 首页 > article >正文

@Transactional 参数详解

@Transactional 注解在 Spring 框架中用于声明一个方法或类应该在事务中执行。事务是一种确保数据库操作要么全部成功,要么全部失败的机制,确保数据的一致性和完整性。以下是 @Transactional 注解的参数详解:

  1. propagation: 事务传播行为,指定事务的传播方式。常见的传播行为有:

    • REQUIRED(默认值):如果当前存在事务,则加入该事务;如果当前没有事务,则新建一个事务。
    • REQUIRES_NEW:每个事务都会开启一个新事务,不管当前是否存在事务。
    • SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务方式执行。
    • NOT_SUPPORTED:以非事务方式执行,如果当前存在事务,则挂起它。
    • MANDATORY:要求当前存在事务;如果当前没有事务,则抛出异常。
    • NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。
    • NESTED:如果当前存在事务,则嵌套在当前事务中执行;如果当前没有事务,则新建一个事务。
  2. isolation: 事务隔离级别,指定事务的隔离级别。常见的隔离级别有:

    • DEFAULT:使用数据库的默认隔离级别。
    • READ_UNCOMMITTED:允许读取未提交的数据,可能会出现脏读。
    • READ_COMMITTED:只允许读取已提交的数据,可以防止脏读。
    • REPEATABLE_READ:在事务期间,多次读取同一数据的结果是相同的,可以防止不可重复读。
    • SERIALIZABLE:最高隔离级别,完全隔离的事务,防止脏读、不可重复读和幻读。
  3. timeout: 事务超时时间,指定事务的超时时间(以秒为单位)。如果事务在指定的时间内没有完成,则会被强制回滚。

  4. readOnly: 事务是否是只读的。设置为 true 可以优化性能,因为 Spring 可以利用只读事务来进行一些优化,防止对数据库进行写操作。

  5. rollbackFor: 指定哪些异常类型会导致事务回滚。如果抛出了这些异常类型中的任何一个,则事务会被回滚。

  6. noRollbackFor: 指定哪些异常类型不会导致事务回滚。如果抛出了这些异常类型中的任何一个,则事务不会回滚,即使 rollbackFor 参数中指定的异常类型被抛出。

  7. rollbackForClassName: 通过异常的类名指定哪些异常会导致事务回滚。这是 rollbackFor 参数的类名字符串版本。

  8. noRollbackForClassName: 通过异常的类名指定哪些异常不会导致事务回滚。这是 noRollbackFor 参数的类名字符串版本。

@Transactional(
    propagation = Propagation.REQUIRED,
    isolation = Isolation.READ_COMMITTED,
    timeout = 30,
    readOnly = false,
    rollbackFor = {SQLException.class},
    noRollbackFor = {CustomException.class}
)
public void someTransactionalMethod() {
    // 业务逻辑
}

这些参数可以根据实际需要进行配置,以达到对事务的精确控制。


http://www.kler.cn/a/297487.html

相关文章:

  • Charles - 夜神模拟器证书安装App抓包-charles监控手机出现unknown 已解决
  • 子网ip和ip地址一样吗?子网ip地址怎么算
  • Google AI 概述——喜欢的三点和不喜欢的两点
  • 使用Python海龟绘图画出奥运五环图
  • Android消息类型及事件分发流程
  • 99.WEB渗透测试-信息收集-网络空间搜索引擎shodan(1)
  • 神经网络的线性部分和非线性部分
  • 漫谈设计模式 [2]:工厂方法模式
  • 动手学深度学习(pytorch)学习记录26-卷积神经网路(LeNet)[学习记录]
  • 基于云函数的自习室预约微信小程序+LW示例参考
  • 560.和为k的子数组
  • LeetCode之图
  • Flutter MacOS 去掉窗口导航栏
  • Vue学习:计算属性Computed
  • AI工具(不断更新)
  • RTOS实时操作系统(任务运行性能分析)
  • 使用jenkins 打包前端私服代码失败的问题
  • A Comprehensive Survey on Graph Neural Networks笔记
  • 【Python 千题 —— 算法篇】字符串替换
  • 编译win2k3简易教程(202409)