当前位置: 首页 > 知识库问答 >
问题:

@spring boot中的事务性

卫增
2023-03-14

此链接:https://www.quora.com/When-should-Spring-Boot-methods-use-the-Transactional-annotation

解释清楚@Transactional在做什么,但我仍然不明白Spring Boot方法何时应该使用此注释:

例如:

我有以下方法:

void addPerson () {// code that calls the DAO layer}

我的方法在没有@Transactional注释的情况下可以很好地工作,那么为什么我应该添加这个注释。

更准确地说(在spring boot中),以下两者之间的区别是什么:

@Transactional void addPerson () {// code that calls the DAO layer}

void addPerson () {// code that calls the DAO layer}

或者Spring Boot是否会自动添加此注释,以便我们不需要将其添加到我们的服务中

共有2个答案

令狐增
2023-03-14

默认情况下,SpringBoot将spring.jpa.open-in-view属性设置为true值,这意味着Spring会自动为每个请求进行事务处理。

如果您将此属性设置为false,则必须使用@Transactional注释要初始化它的点[Controller|Service|DAO]。

柴寂离
2023-03-14

当API上的并发调用可能会相互影响时,您可以使用@Transcational

假设您想添加一个人(您从某处检索数据,从数据中创建一个新的人,并将其添加到一个人员列表)。让我们假设为了创建一个人,您需要一个属于另一个人的属性。

在创建Person之前,您将通过Id某人搜索合作伙伴并将其添加到新的PersonPartners属性中。但是,如果在所有这些查询期间,您要添加的合作伙伴在某个地方被删除了怎么办(假设由于其他查询而在数据库中)。您最终将没有您请求的对象。

如果使用事务性,Spring会确保所有必需的数据都是安全的,直到事务结束。一旦它结束,将发生来自合作伙伴的删除请求,然后您将有一些逻辑将其从new Person对象中删除。但这将在之后发生。

您可以使用事务性来确保“事务”的安全。

 类似资料:
  • 本文向大家介绍SpringBoot 注解事务声明式事务的方式,包括了SpringBoot 注解事务声明式事务的方式的使用技巧和注意事项,需要的朋友参考一下  springboot 对新人来说可能上手比springmvc要快,但是对于各位从springmvc转战到springboot的话,有些地方还需要适应下,尤其是xml配置。我个人是比较喜欢注解➕xml是因为看着方便,查找方便,清晰明了。但是xm

  • 本文向大家介绍详解SpringBoot的事务管理,包括了详解SpringBoot的事务管理的使用技巧和注意事项,需要的朋友参考一下 Springboot内部提供的事务管理器是根据autoconfigure来进行决定的。 比如当使用jpa的时候,也就是pom中加入了spring-boot-starter-data-jpa这个starter之后。 Springboot会构造一个JpaTransacti

  • 我正在使用MongoDB的springboot 2.3.0。注释对我不起作用。如果发生异常,则无法回滚事务。 任何帮助都将得到高度赞赏。 我的控制器类: 我的serviceImpl类 我的MongoConfig类

  • 本文向大家介绍springboot开启声明式事务的方法,包括了springboot开启声明式事务的方法的使用技巧和注意事项,需要的朋友参考一下 springboot开启事务很简单,只需要一个注解@Transactional 就可以了。因为在springboot中已经默认对jpa、jdbc、mybatis开启了事事务,引入它们依赖的时候,事物就默认开启。当然,如果你需要用其他的orm,比如beatl

  • 我正在与用propagation.requires_new注释的方法的奇怪行为作斗争。 以下是TransactionManager的日志:

  • 根据这里的baeldung 如果我们使用的是Spring Boot项目,并且在类路径上有spring-data-*或spring-tx>依赖项,那么事务管理将通过>default启用。“ serviceConfig.java 哪里出了问题?,我在SpringBoot配置中遗漏了什么? 提前感谢你的帮助

  • 在以下代码中: 无论我是否注释/取消注释事务,它们都工作正常,即没有事务也保存操作成功执行。但是当我检查留档时,他们总是在插入更新删除之前使用事务。有什么具体原因吗?我错过了什么吗? 请告诉我这件事。我相当困惑:( 当做

  • 项目地址 前言 事务:事务是由一组操作构成的可靠的独立的工作单元,事务具备ACID的特性,即原子性、一致性、隔离性和持久性。 ​ 分布式事务:当一个操作牵涉到多个服务,多台数据库协力完成时(比如分表分库后,业务拆分),多个服务中,本地的Transaction已经无法应对这个情况了,为了保证数据一致性,就需要用到分布式事务。 ​ Seata :是一款开源的分布式事务解决方案,致力于在微服务架构下提供