2010-07-31 11 views
5

Muss ein Persistenz-Manager generell geschlossen werden? Können Sie sich ein offen halten und wieder verwenden es die ganze Zeit, das heißt nur dieses Muster wiederholen:Einen JDO-Persistenzmanager am Leben halten, anstatt ihn zu schließen?

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

Was die Nachteile hierfür sind? Es scheint sinnvoll zu sein, da Sie niemals Objekte "lösen" müssen, weil der Persistenzmanager geschlossen ist.

Antwort

4

Sie können es jederzeit offen halten, wenn Sie möchten. Das Hauptproblem, das Sie beachten sollten, ist, wann Sie "Update" -Abfragen ausführen, wie schnell die Änderungen wirksam werden sollen. Wenn Sie den Persistenzmanager schließen, bleiben diese Änderungen sofort erhalten. Wenn Sie dies nicht explizit tun, wird der Datenspeicher dazu verwendet, Ihre Änderungen nach eigenem Ermessen beizubehalten. Wenn Sie Transaktionen verwenden, ist dies irrelevant. Abgesehen davon gibt es nicht wirklich Nachteile. Es gibt einen großen CPU + Zeitaufwand bei der allerersten Initialisierung der PM (erste Verwendung nach der Bereitstellung), aber nach dem Öffnen/Schließen ist die PM im Grunde frei.

+1

Gibt es eine Möglichkeit, die PM zu zwingen, die Daten persistent zu machen, außer es zu schließen oder eine Transaktion zu begehen? –

+0

Ja, du kannst auch einen Flush machen() Ich denke, aber warum nicht einfach Transaktionen verwenden? – Jacob

Verwandte Themen