Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring Boot Hibernate高效事务管理_Java_Spring_Hibernate_Spring Boot_Spring Transactions - Fatal编程技术网

Java Spring Boot Hibernate高效事务管理

Java Spring Boot Hibernate高效事务管理,java,spring,hibernate,spring-boot,spring-transactions,Java,Spring,Hibernate,Spring Boot,Spring Transactions,在与Hibernate JPA集成的spring引导应用程序中。什么是不同的、最有效的事务管理方法,以及在各种情况下需要考虑的要点。 此时,我们正在对来自控制器层的服务层调用使用@Transactional注释;服务层因此执行各种读/写DAO调用。具有@Transactional的DAO方法 在必须直截了当且基本的场景中,当我们在单个服务层调用中对单个实体进行操作,并且希望将完整的操作集封装在单个事务中时,这对我们很有用 但是,如果我们希望根据具体情况采取不同的行为,该怎么办;例如,如果我们在服

在与Hibernate JPA集成的spring引导应用程序中。什么是不同的、最有效的事务管理方法,以及在各种情况下需要考虑的要点。 此时,我们正在对来自控制器层的服务层调用使用
@Transactional
注释;服务层因此执行各种读/写DAO调用。具有
@Transactional
的DAO方法

在必须直截了当且基本的场景中,当我们在单个服务层调用中对单个实体进行操作,并且希望将完整的操作集封装在单个事务中时,这对我们很有用

但是,如果我们希望根据具体情况采取不同的行为,该怎么办;例如,如果我们在服务层调用中有一个在一组实体上运行的循环,尽管我们希望每个实体上的操作都是事务性的,但是如果我们不希望整个循环成为单个事务。或者,如果在对特定实体进行操作时,需要作为工作流的一部分执行多个操作,则这些工作流的子集可能希望在子集中出现异常/错误情况时对之前执行的操作没有影响

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

提前谢谢

如果我们有一个循环在服务中的一组实体上运行 层调用,尽管我们希望每个实体上的操作 交易性

在事务方法中的非事务和流程交互项中迭代,或在
@transactional
中的事务和流程中与
传播交互。需要\u NEW

最后一个结果是,自己处理事务

或者,如果对特定实体进行操作,则需要执行多个操作 要作为工作流的一部分执行,这些工作流的子集可以 希望对执行的操作没有影响 在子集中出现异常/错误情况时,在它们之前

典型的长时间运行事务

最好的办法是避免这种情况——例如分多个步骤创建合同草案——并在最后将该合同序列化为适当的实体,并将其保存在单个事务中