基于Transactional事务的使用以及注意说明
作者:seapeak007 发布时间:2022-02-24 12:23:08
标签:Transactional,事务
Transactional事务的使用及注意
Transactional的事务使用,主要引用两个包中的Bean,一个是jpa的javax.transaction.Transactional,
另外一个是spring的
org.springframework.transaction.annotation.Transactional
两个都能实现事务的作用,但是尽量2者不要混用,特别是一个事务包含多个service方法,一个service方法引用jpa,一个引用spring的。最好主要使用jpa的
org.springframework.transaction.annotation.Transactional
事务的回滚是在运行时异常时进行回滚的,所以如果有抛出异常时,抛出的异常需要继承RunTimeException,如果异常为普通的Exception,则需要在Transactional上标明rollbackOn参数。
具体看如下例子,采用的jpa包中的事务:
import javax.transaction.Transactional;
@Override
@Transactional( rollbackOn= AccountCoreException.class)
public String lock(OrderBalanceLockRq oclrq) throws AccountGatewayException,AccountCoreException {
public class SystemException extends RuntimeException {
AccountGatewayException继承SystemException了,继承了RuntimeException,如果捕获到该异常,事务也会回滚。
AccountCoreException继承了Exception,非RuntimeException,则rollback声明一下,捕获到该异常时,事务也会回滚。
找不到Transactional类 依赖@Transactional的解决
看的别人的源代码是这样:
import org.springframework.transaction.annotation.Transactional;
但其实对我来说是错误的
应该是:
import org.springframework.transaction.annotation.Transactional;
添加的依赖如下:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
最后,今天的一大收获是知道了
https://mvnrepository.com
可以查所需要的东西,直接复制粘贴dependency。有些类不在我们所以为的包里,这个网站就显得很有用。
来源:https://blog.csdn.net/seapeak007/article/details/79288039


猜你喜欢
- @PathVariable接收两个参数首先@PathVariable无法接收对象,但是可以接收多个值var data = obj.data;
- 添加记录后获取主键ID,这是一个很常见的需求,特别是在一次前端调用中需要插入多个表的场景。除了添加单条记录时获取主键值,有时候可能需要获取批
- Java异常是Java提供的一种识别及响应错误的一致性机制。Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅
- 前言今天遇到一个需求,需要对word模板进行替换制定的变量在网上找了很多方案,做了很多的demo,下面就把我觉得比较简单的一种分享给大家本次
- 错误详情:java.lang.NoSuchMethodException: [Lorg.springframework.web.multip
- 场景女朋友最近被安排了一个企业微信添加客户的沙雕活,然后跟我吐槽说,每天都要加,都想离职了,为了不让女朋友那么难受,突然想到可以使用Robo
- 水流波动的波形都是三角波,曲线是正余弦曲线,但是Android中没有提供绘制正余弦曲线的API,好在Pa
- 本文实例为大家分享了Android绘制仪表盘指针刻度的具体代码,供大家参考,具体内容如下不废话,先看效果图:表盘的绘制重点有两点:1.表盘刻
- 一.什么是多渠道打包在不同的应用市场可能有不同的统计需求,需要为每个应用市场发布一个安装包,这里就引出了Android的多渠道打包。在安装包
- 在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>、DataTa
- 一,块作用域首先在深入学习控制结构之前,需要先了解块(block)的概念。块:即复合语句,是指由一对大括号括起来的若干条简单的 Java 语
- 本文实例讲述了Android编程应用风格和主题。分享给大家供大家参考,具体如下:当你设计你的程序的时候,你可以用风格和主题来统一格式化各种屏
- Kotlin的对象表达式与Java中的匿名内部类的主要区别:匿名内部类只能指定一个父类型,但对象表达式可以指定0~N个肤类型。一、对象表达式
- 真实的多线程业务开发中,最常用到的逻辑就是数据的读写,ReentrantLock虽然具有完全互斥排他的效果(即同一时间只有一个线程正在执行l
- 本文实例讲述了Java实现储存对象并按对象某属性排序的几种方法。分享给大家供大家参考,具体如下:在编程的时候,经常会出现对某一种类的对象们按
- 文档合并是一种高效文档处理方式。如果能够有一个方法能将多种不同类型的文档合并成一种文档格式,那么在文档存储管理上将为我们提供极大的便利。因此
- Activity类处于android.app包中,继承体系如下:1.java.lang.Object2.android.content.Co
- 1.引言在实习期间,感受到在vs code上编程的优势(实习期间主要写的lua脚本),因此想把C++和python的开发也迁移到vs cod
- 拼图小游戏,学习阶段。很多不足,改进了一下演示图片:J_Puzzle.javaimport java.awt.BorderLayout;im
- IDEA设置文档注释模板创建Class文件时自动生成的头部注释如图如何配置idea的头部注释格式,可以生成像之前的注释格式一样的文档注释?F