首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Spring Boot Hibernate高效事务管理

Spring Boot Hibernate高效事务管理
EN

Stack Overflow用户
提问于 2018-08-12 22:34:22
回答 1查看 66关注 0票数 1

在与Hibernate JPA集成的spring boot应用程序中。事务管理的不同和最有效的方法是什么,以及在各种场景下需要考虑的关键点是什么。

此时,我们在来自控制器层的服务层调用中使用了@Transactional注释;因此,服务层将执行各种读/写DAO调用。使用@Transactional的DAO方法。

在必须直接和基本的场景中,这很好地服务于我们,其中我们在单个服务层调用中对单个实体进行操作,并且我们希望在单个事务中包装完整的操作集。

但是,如果我们想要根据情况不同的行为;例如,如果我们在服务层调用中有一个对一组实体进行操作的循环,虽然我们希望每个实体上的操作都是事务性的,但如果我们不希望整个循环是单个事务的话。或者,如果当在特定实体上操作时,需要将若干操作作为工作流的一部分来执行,则这些工作流的子集可能希望在子集中出现异常/错误的情况下不影响在它们之前执行的操作。

我知道有很多不同的方法可以实现这一点,但我一直在寻找最佳、最有效和最有效的方法的线索。

提前感谢!!

EN

回答 1

Stack Overflow用户

发布于 2018-08-12 22:39:57

如果我们在服务层调用中有一个对一组实体进行操作的循环,尽管我们希望每个实体上的操作都是事务性的,

在事务性方法中迭代非事务性和流程交互项,或使用Propagation.REQUIRES_NEW@Transactional中交互事务性和流程

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/transaction/annotation/Transactional.html#isolation--

作为最后的结果,您自己处理事务。https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/transaction.html

或者,如果当在特定实体上操作时,需要将若干操作作为工作流的一部分来执行,则这些工作流的子集可能希望在子集中出现异常/错误的情况下不影响在它们之前执行的操作。

典型的长时间运行事务

最好的做法是避免这种情况--例如,在多个步骤中创建合同草案--并在最后将该合同序列化为适当的实体,并将其持久化到单个事务中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51809797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档