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

@Transactional注解及其事务管理

1. 事务问题概述
  • 事务问题主要来源于数据库,与数据库事务紧密相关。
  • 事务的四大特性(ACID):
    • 原子性(Atomicity):事务要么完全执行,要么完全不执行。
    • 一致性(Consistency):事务执行前后数据库保持有效状态。
    • 隔离性(Isolation):并发事务相互不干扰。
    • 持久性(Durability):事务提交后,其结果对数据库的影响是持久的。
2. @Transactional注解
  • @Transactional是Spring框架提供的事务管理注解。
  • 它依赖于数据库的事务能力,不支持事务操作的数据库或中间件将无法使用。
3. @Transactional的使用
  • 可以用于类、接口或方法。
  • 官方不推荐用于接口,因为AOP操作可能导致失效。
  • 如果类和方法同时标注,以方法的配置为准。
4. @Transactional注解的参数
  • 事务传播行为(propagation):控制事务的创建和加入方式。
    • REQUIRED:默认值,加入现有事务或创建新事务。
    • REQUIRES_NEW:总是创建新事务,挂起现有事务。
    • NESTED:嵌套事务。
    • MANDATORY:必须在现有事务中运行。
    • NEVER:不能在事务中运行。
    • NOT_SUPPORTED:不支持事务。
    • SUPPORTS:支持事务,也可以非事务方式运行。
  • 事务隔离级别(isolation):与数据库隔离级别一致。
    • DEFAULT:使用数据库默认隔离级别。
    • READ_UNCOMMITTED:读未提交。
    • READ_COMMITTED:读已提交。
    • REPEATABLE_READ:可重复读。
    • SERIALIZABLE:串行化。
  • 超时时间(timeout):事务完成的最长时限。
  • readOnly:指定事务是否为只读。
  • rollbackFor:指定触发事务回滚的异常类型。
  • noRollbackFor:指定不触发回滚的异常类型。
5. @Transactional与AOP
  • AOP(面向切面编程)用于分离横切关注点。
  • Spring AOP使用代理模式实现,包括JDK动态代理和CGLIB代理。
6. @Transactional的工作原理
  • 解析事务属性。
  • 生成代理对象,包含事务拦截器。
  • 事务拦截器管理事务的开启、执行和提交/回滚。
7. @Transactional失效情况
  • 自调用:同一类内部方法调用不会触发代理逻辑。
  • 非public方法:代理只能拦截public方法。
  • 配置不正确:未启用注解驱动的事务管理。
http://www.lryc.cn/news/409052.html

相关文章:

  • ROS2入门到精通—— 3-1 ROS2实战:CasADi —— 优化计算的利器
  • 日拱一卒 | JVM
  • 乐尚代驾六订单执行一
  • SciPy 与 MATLAB 数组
  • 基于vue-grid-layout插件(vue版本)实现增删改查/拖拽自动排序等功能(已验证、可正常运行)
  • DBoW3相关优化脉络
  • qt 如何制作动态库插件
  • 一种docker start放回Error response from daemon: task xxx错误的解决方式
  • 规控面试常见问题
  • 代码随想录算法训练营Day 63| 图论 part03 | 417.太平洋大西洋水流问题、827.最大人工岛、127. 单词接龙
  • 【全网最全】CSDN博客的文字颜色、字体和字号设置
  • C#实现数据采集系统-Mqtt实现采集数据转发
  • common-intellisense:助力TinyVue 组件书写体验更丝滑
  • 图片在线压缩有效方法详解,分享7款最佳图片压缩工具免费(全新)
  • electron安装及快速创建
  • 需要消化的知识点
  • 2024年7月25日(Git gitlab以及分支管理 )
  • pdf格式过大怎么样变小 pdf文件过大如何缩小上传 超实用的简单方法
  • 前端文件下载word乱码问题
  • repo中的default.xml文件project name为什么一样?
  • <section id=“nice“ data-tool=“mdnice编辑器“ data-webs
  • 作业7.26~28
  • 自定义webIpad证件相机(webRTC)
  • GO发票真伪批量查验方法、数电票查验接口
  • 【Go系列】Go的UI框架Fyne
  • .NET MAUI:跨平台开发的未来
  • VSCode切换默认终端
  • 卫星观测叶绿素的相反信号
  • 2024年最新NVIDIA T4价格表及行业趋势!
  • HTML + CSS编程规范