这个注解的话应该是开启事务,按照我的理解是如果涉及到2个表的插入或者修改的话
才需要开启注解。
但是我看到公司的项目,service 里面只有插入一个表的数据也用了这个注解,是否是多余的。
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

@Transactional这个注解麻烦解释下
收起
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除 结题
- 收藏 举报
当前问题酬金
¥ 0 (可追加 ¥500)
支付方式
扫码支付
11条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
xxfamly 2018-06-25 06:03关注从业务上来说,一次交互产生的数据保持同一性,否则从业务层面认为这就是脏数据,但是数据库认为这是合理的。为了保证数据的有效,需要功能入口统一管理事务,不仅仅限于是几个表的操作,可能是多个SQL的操作。
从设计上来说,为了规范代码写法,可能要去入口service全部加入事务控制,便于后续扩展。本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
汪旃 2018-06-24 08:53关注这个不是多余的,你的理解是错误的,业务层(service)主要是实现业务的,在业务层中无论是对一张表或者是多张表,都需要开启事物注解的。
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
寂寞的潇洒 2018-06-24 10:39关注这个注解的意思是,spring容器来自动管理,这个service中的每个方法的插入、修改、删除等业务的事务,不然的话,每个插入修改删除,都需要手动提交或回滚。
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
csk124 2018-06-24 10:49关注一个service方法可能调用多个dao的方法,这些dao方法中的多个sql就需要一起提交或者回滚,事务是对sql来说的,不是对表来说的
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
zhahuan007 2018-06-24 13:10关注使用注解式事物,方法上面不加这个注解,代码不会自动提交。
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
xiaobiaobiao 2018-06-24 13:51关注事务的隔离级别,有2种表达方式
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
小艾888 2018-06-24 19:46关注TransactionDefinition.ISOLATION_DEFAULT:这是默认值,表示使用底层数据库的默认隔离级别。对大部分数据库而言,通常这值就是TransactionDefinition.ISOLATION_READ_COMMITTED。
TransactionDefinition.ISOLATION_READ_UNCOMMITTED:该隔离级别表示一个事务可以读取另一个事务修改但还没有提交的数据。该级别不能防止脏读,不可重复读和幻读,因此很少使用该隔离级别。比如PostgreSQL实际上并没有此级别。
TransactionDefinition.ISOLATION_READ_COMMITTED:该隔离级别表示一个事务只能读取另一个事务已经提交的数据。该级别可以防止脏读,这也是大多数情况下的推荐值。
TransactionDefinition.ISOLATION_REPEATABLE_READ:该隔离级别表示一个事务在整个过程中可以多次重复执行某个查询,并且每次返回的记录都相同。该级别可以防止脏读和不可重复读。
TransactionDefinition.ISOLATION_SERIALIZABLE:所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。但是这将严重影响程序的性能。通常情况下也不会用到该级别。本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
swiftgod 2018-06-25 02:07关注加入这个注解的意思是,这个方法将使用事务,且这个注解应该只被应用到 public 可见度的方法上。 如果你在 protected、private 或者 package-visible 的方法上使用 @Transactional 注解,它也不会报错, 但是这个被注解的方法将不会展示已配置的事务设置。
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
hot2dog 2018-06-25 02:13关注对,,一个业务方法里面, 多次调用 一张表的不同方法, 也有可能引发事务,
兄弟,你要理解, 事务是加在 service 层,业务方法上的, 不对针对 dao层某个操作数据的单独方法。。。
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
Noopla 2018-06-25 02:15关注打了这个注解的类或者方法表示该类里面的所有方法或者这个方法的事务由spring处理,来保证事务的原子性,不知道这样说你能不能理解,即是方法里面对数据库操作,如果失败则spring负责回滚操作,成功提交操作
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
w_m_5 2018-06-25 02:45关注在类或方法中使用@transaction注解 应用事务
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容
报告相同问题?
- 2018-06-24 08:43回答 11 已采纳 从业务上来说,一次交互产生的数据保持同一性,否则从业务层面认为这就是脏数据,但是数据库认为这是合理的。为了保证数据的有效,需要功能入口统一管理事务,不仅仅限于是几个表的操作,可能是多个SQL的操作。
- 2017-11-17 05:18回答 5 已采纳 一般的配置方法是让Spring管理除了Controller注解以外注解,而让SpringMVC单纯管理Controller注解。 也就是说Spring有一个配置文件,里面配置成扫描非Controll
- 2022-07-19 17:42回答 3 已采纳 @Component public class CustomBeanDefinitionRegistryPostProcessor implements BeanDefinitionRegistry
- 2022-05-06 21:52二哥学Java的博客 简而言之,@Transactional注解在代码执行出错的时候能够进行事务的回滚。 使用说明 需要在启动类上添加@EnableTransactionManagement注解。 当作用于类上时,该类的所有 public 方法将都具有该类型的事务...
- 2019-10-23 21:53回答 1 已采纳 单独执行bb应该没有问题的。如果你需要mm中调用的方法全部都回滚的话,注解应该加在mm方法上,现在mm上没有加@transactional注解,这时候bb抛出异常并不会影响aa的执行。 了解一下事务
- 2021-10-24 09:11回答 8 已采纳 你的事务配置有问题,自己度娘下springboot事务配置。1、在测试类里面用@Transactional本身是没有commit操作的,就是说,数据是不会持久化到数据中。2、所以你在测试类里面测试事务
- 2022-05-18 16:51回答 2 已采纳 2022-05-19 10:33:17.972 DEBUG 5320 --- [0800-thread-199] y.bss.hjjk.dao.HjjkEnterpriseDao.insert :
- 2023-04-04 10:17百里 Jess的博客 事务(Transactional) 就是把多个要做的操作组合成一个整体,利用事务的特性来保证操作的安全性,如果一个事务做到一半出现任何错误,就会进行回滚操作,来恢复成最初的模样。
- 2019-11-15 15:51
eclipse中springboot在类中使用@Transactional和@Async后,打断点进行debug就会提示missing line number? eclipse maven spring
回答 1 已采纳 看下class与你java代码一致么。是不是没编译过来, - 2019-01-09 16:06回答 2 已采纳 finally { C(); } 这样就行了 哈哈哈哈
- 2022-08-09 18:55回答 5 已采纳 at com.mysql.cj.jdbc.ConnectionImpl.isReadOnly(ConnectionImpl.java:1394)看到了这句,如果设置了只读的话,插入数据就会报错。检查一
- 2021-11-20 16:48b348858003的博客 @Transactional注解失效,pom.xml少了以下依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.1.5.RELEASE&...
- 2022-03-14 21:39回答 1 已采纳 改为接口注入 实现类注入你就别用@Qualifier了 @AutowiredGoodsOptions goodsOptions; 跟事务注解没啥关系
- 2020-11-20 05:22weixin_39898733的博客 对于注解相信大家都不陌生,因为初学者第一个注解就是@Override,用于标识重载方法。在Java EE开发过程中,注解更是无处不在,像经典的MVC设计模式就至少使用到了4个注解:@Component、@Repository、@Service和@...
- 2023-03-03 16:14知识汲取者的博客 记录一下使用@Transational注解实现事务,常见的几种失效场景
- 2016-04-04 14:49renwuqiangg的博客 在service类前加上@Transactional,声明这个service所有方法需要事务管理。每一个业务方法开始时都会打开一个事务。 Spring默认情况下会对运行期例外(RunTimeException)进行事务回滚。这个例外是unchecked如果遇到...
- 2022-08-18 01:18✘迟暮的博客 @Transactional注解管理事务 的实现方法 @Transactional 注解管理事务的实现步骤 第一步,在配置文件中添加事务配置信息 第二步,将@Transactional 注解添加到合适的方法上,并设置合适的属性信息 表 @Transactional...
- 2019-07-03 15:40达文西不辅助的博客 Spring进行事务注解之@Transactional https://xiaofengxbf.iteye.com/blog/1973046 @Transactional事物注解方式(可以标注于类和方法之前) 使用的条件及需要注意的事项: 1.使用必须是java5或者以上; 2...
- 没有解决我的问题, 去提问