gpt4 book ai didi

java - Orient DB 中的事务管理

转载 作者:行者123 更新时间:2023-12-01 09:34:32 26 4
gpt4 key购买 nike

我正在使用以下逻辑在 Orient DB 中启动事务。 <code>graphFactory.getDatabase().begin(type);</code>我观察到的是,如果事务未在方法内关闭,它会自动可供其他方法使用,这对我来说似乎是泄漏。我将尝试解释以下场景:

 public <T> void addVertexToDB(T data){
graphFactory.getDatabase().begin(OTransaction.TXTYPE.OPTIMISTIC);
//logic for fetching data and adding vertex
//I am neither calling rollback nor commit here
}

我有另一种方法,例如更新

public <T> void updateVertexToDB(T data){
//not starting the transaction explicitly and doing some write operation
//logic for fetching data and adding vertex
//I am neither calling rollback nor commit here
}

图工厂具有以下属性集

graphFactory.setAutoStartTx(false);
graphFactory.setRequireTransaction(true);

期望:updateVertexToDB 应该抛出 OTransactionException e当前行为:它通过保存开始交易并正常工作。

所以只是想知道我如何实现这样的行为:如果一个方法没有启动事务并尝试写入数据库,它必须抛出 OTransactionException e直到它没有嵌套在已经运行事务的方法中。

最佳答案

什么是graphFactory?这个名字有误导性。它看起来不像 OrientGraphFactory ,而是一个 OrientGraph 对象,对吗?

无论如何,调用graphFactory.getDatabase().begin(OTransaction.TXTYPE.OPTIMISTIC);你正在绕过 GraphAPI。如果您与 Graph API 一起使用,则行为应该是预期的。尝试调用graphFactory.begin();

关于java - Orient DB 中的事务管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39115032/

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