持久性管理器通常需要关闭吗?你能不能一直打开一个并重复使用它,即重复这个模式:
Transaction tx = pm.currentTransaction();
try {
tx.begin();
// do stuff
tx.commit();
} finally {
if (tx.isActive()) tx.rollback();
}
这样做的缺点是什么?这似乎是有道理的,因为由于持久性管理器被关闭,您永远不需要“分离”对象?
最佳答案
如果需要,您可以一直打开它。要考虑的主要问题是当您运行“更新”查询时,您希望更改多快生效。关闭持久性管理器会立即保留这些更改,而不明确地这样做将依赖于数据存储在它自己方便的时候保留您的更改。如果您正在使用事务,则这无关紧要。除此之外,真的没有任何缺点。在 PM 的第一次初始化(部署后首次使用)时有很大的 cpu + 时间开销,但在打开/关闭 PM 之后基本上是免费的。
关于java - 让 JDO 持久性管理器保持 Activity 状态而不是关闭它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3378131/