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

Spring数据中不需要事务行为

邵祺
2023-03-14

我试图弄清楚如何配置一个方法,使其不在使用Spring的事务中运行。我读到Spring数据存储库默认情况下激活其方法中的事务行为。我不想要这个事务,因为我有许多对存储库的“保存”调用,并且每个调用都是独立的。我认为为每个对存储库方法的调用创建一个事务会降低代码和应用程序的性能。所以:

  • 这是可能的还是每个服务或dao方法都必须在一个事务中运行?
  • 如果有,为什么?
  • 如果可能,如何配置方法不在事务中运行?只是删除Spring事务性注释?

谢谢

共有1个答案

琴俊人
2023-03-14

Spring服务bean默认情况下不是事务性的。您可以在类或方法级别添加@Transactional,以强制其为事务性的。这里有一些链接详细解释了Spring中事务性的工作原理
在类上定义@transactional和在方法上定义@transactional有什么不同。
Spring-@transactional-后台发生了什么?.
https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/transaction.html#tx-decl-explained。

下面的线程也对此进行了讨论。
Spring@Service是事务性的吗?

 类似资料:
  • 对于每个客户机,我们自然需要发送关于事务的反馈(OK或Exception->rollback)。 我的问题是:如果我使用,是否意味着只使用一个事务,如果第100个客户机遇到问题,第1个客户机的事务也会回滚?

  • 在下面的文章中说, 在此处输入链接描述 需要传播–支持当前交易;如果不存在,请创建一个新的。 下面是一个产品代码,然后是两个表的产品详细信息。 我的问题是什么时候会发生这种行为?我的意思是,当前交易怎么会结束?是在保存还是更新之后? 如果我们使用PROPAGATION_REQUIRED假设当前事务在插入产品后结束。然后一个新的事务来了,但是如果插入产品数量时出现任何故障,它只会回滚数量而不是输入的

  • 我在存储库类中有一个方法,标记为,该方面正在执行,如stacktrace中所示,但抛出的异常是“Transaction required exception” 电磁场: 交易: 我真的要疯了,任何帮助都会很好。 似乎,有一个事务,它被检查为完成,加入事务失败,所以它标记为仅回滚,因为它不能加入它。

  • 在以下代码方法中,更新正确的sql,但sql有一些问题,但是,当我调用doService()时,它必须将更新提交到DB,即使doService 2()有sql异常,因为doService 2()有一个新的传播类型,但是当我取消这个更新时,不会提交DB。。 正如你们的建议,以以下方式进行测试,但仍然面临相同的问题。这里i在一个单独的类中,但即使仍然存在与上述相同的问题

  • 问题内容: 当我尝试从数据库中读取数据时,至少使用 抛出异常表示不存在事务。 当我添加注释时: 它工作正常。 但是,由于读取和访问数据每秒将发生百万次,因此我想确保不会不必要地阻塞我们的环境。 如果不是,创建只读事务的成本是多少? 我不能在没有事务的情况下结合Spring创建Hibernate Criteria Query吗? 问题答案: 所有数据库语句都在物理事务的上下文中执行,即使我们没有显式

  • 要访问2个数据库,我们使用两个不同的事务管理器(每个都有自己的数据源): 第一个事务管理器: 第二个事务管理器: 在服务层,我们希望有一个获取id并返回DTO的方法。问题是DTO必须填充来自两个数据库的数据。 我们尝试了第一种方法: FooDao:使用 sessionFactory(与 transactionManager 相同) BarDao:使用 sessionFactory2(与 trans