gpt4 book ai didi

mysql - 如何使用jpa处理分布式事务

转载 作者:行者123 更新时间:2023-11-29 09:37:49 26 4
gpt4 key购买 nike

我有一个要求,我需要将缩减插入两个不同的数据库MYSQL和mongodb中。在发生故障转移的情况下,应该回滚整个事务。请尽早提供帮助。需要实现这个要求。

最佳答案

首先,您必须定义两个数据库连接,因此还要定义两个不同的持久性单元

persistence.xml

文件。

之后,只需在每个 DAO 方法中创建 2 个单独的 EntityManager。

尝试以下操作:

persistFoo(Foo f) {
// Create these EntityManagers with a proper connection/persistence unit name
EntityManager emMySQL = //your MySQL db
EntityManager emMongo = //your Mongo db

EntityTransaction txMySQL = emMySQL.getTransaction();
EntityTransaction txMongo = emMongo.getTransaction();

try {
txMySQL.begin();
emMySQL.persist(f);
txMySQL.commit();

txMongo.begin();
emMongo.persist(f);
txMongo.commit();
} catch(Exception e) {
if(txMySQL.isActive()) {
txMySQL.rollback();
}
if(txMongo.isActive()) {
txMongo.rollback();
}
} finally {
emMySQL.close();
emMongo.close();
}
}

关于mysql - 如何使用jpa处理分布式事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57232384/

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