gpt4 book ai didi

java - 在服务类中使用多个 dao 完成事务

转载 作者:行者123 更新时间:2023-11-29 05:39:20 26 4
gpt4 key购买 nike

我如何实现一个服务类需要多个数据访问对象的完整事务。假设我有以下结构。

目前,如果我的 dao2 失败了,dao1 仍然被提交到数据库,这是我不希望它发生的。但是,我需要我的 DAO 是可重用的。

public class mainService(){
dao1.store(obj1);
dao2.store(obj2);
}

而我的dao是这样写的。

道 1

private EntityManager entityManager;
@Transactional
public void store(Object obj1){
entityManager.persist(obj1);
}

道 2

private EntityManager entityManager;
@Transactional
public void store(Object obj2){
entityManager.persist(obj2);
}

请帮忙。

最佳答案

在一次交易中做到这一点。

@Transactional
public void mainService(..){
dao1.store(obj1);
dao2.store(obj2);
}

只会创建一个事务,如果 dao2 失败,dao1 也不会提交。并从 store 方法中删除 @Transactional。使数据库级别的方法成为事务性的并不是一个好主意。在某些情况下,这个水平可能低两个。

关于java - 在服务类中使用多个 dao 完成事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18249076/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com