2010-07-31 61 views
5

是否需要關閉持久性管理器?你可以保持一個開放,並重復使用它,即只是重複這種模式:保持JDO持久性管理器活着而不是關閉它?

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

這是什麼缺點?這似乎是有道理的,因爲由於持久性管理器被關閉,您永遠不需要「解鎖」對象?

回答

4

如果需要,您可以隨時打開它。要考慮的主要問題是,當您運行「更新」查詢時,您希望更改生效的速度有多快。關閉持久性管理器會立即保留這些更改,但如果不明確這樣做,將依賴於數據存儲區以便根據自己的方便持久保存更改。如果您正在使用交易,這是無關緊要的。除此之外,沒有任何不利之處。在首次初始化PM(在部署後首次使用)時,會有很大的CPU +時間開銷,但在打開/關閉PM之後基本上是免費的。

+1

除了關閉或提交事務之外,還有什麼方法可以強制pm保存數據嗎? – 2010-08-09 14:30:41

+0

是的,你也可以做一個flush()我認爲,但爲什麼不只是使用交易? – Jacob 2010-08-12 09:13:28

相關問題