【问题标题】:Keeping a JDO persistence manager alive instead of closing it?保持 JDO 持久性管理器活着而不是关闭它?
【发布时间】:2011-03-23 15:07:56
【问题描述】:

持久性管理器通常需要关闭吗?你能保持一个打开并一直重复使用它,即重复这个模式:

Transaction tx = pm.currentTransaction();
try {
    tx.begin();
    // do stuff
    tx.commit();
} finally {
    if (tx.isActive()) tx.rollback();
}

这样做有什么缺点?这似乎是有道理的,因为由于持久性管理器被关闭,您永远不需要“分离”对象?

【问题讨论】:

    标签: java google-app-engine jdo


    【解决方案1】:

    如果需要,您可以一直保持打开状态。要考虑的主要问题是当您运行“更新”查询时,您希望更改多快生效。关闭持久性管理器会立即持久化这些更改,而不明确这样做将依赖数据存储在其方便时持久化您的更改。如果您使用交易,这无关紧要。除此之外,实际上并没有任何缺点。在第一次初始化 PM(部署后首次使用)时有很大的 cpu + 时间开销,但之后打开/关闭 PM 基本上是免费的。

    【讨论】:

    • 除了关闭或提交事务外,还有什么方法可以强制pm持久化数据?
    • 是的,你也可以做一个 flush() 我认为,但是为什么不只使用事务呢?
    猜你喜欢
    • 2011-05-10
    • 2014-12-20
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 2011-10-25
    • 2011-07-17
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多