持久性管理器通常需要关闭吗?您可以一直打开它并一直重复使用吗,例如,重复这种模式:

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

这有什么缺点?这似乎很有意义,因为由于关闭了持久性管理器,您将不需要“释放”对象?

最佳答案

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

07-26 02:46