2010-07-31 18 views
5

Czy zazwyczaj trzeba zamknąć menedżera trwałości? Można po prostu trzymać jeden otwarty i ponownie go używać cały czas, czyli po prostu powtórzyć ten wzór:Utrzymanie menedżera trwałości JDO zamiast go zamknąć?

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

Jakie są wady z tym? Wydaje się to mieć sens, ponieważ nigdy nie musiałbyś "wyłapać" obiektów z powodu zamknięcia menedżera uporczywości?

Odpowiedz

4

Możesz go zawsze otwierać, jeśli chcesz. Głównym problemem, który należy wziąć pod uwagę, jest to, kiedy uruchamiasz zapytania "aktualizuj", jak szybko mają one obowiązywać. Zamknięcie menedżera trwałości utrzymuje te zmiany natychmiast, a nie uczynienie tego w sposób jawny będzie zależało od magazynu danych, aby utrzymał zmiany we własnym zakresie. Jeśli korzystasz z transakcji, nie ma to znaczenia. Poza tym nie ma żadnych minusów. Po pierwszym zainicjowaniu PM-a (pierwsze użycie po wdrożeniu) jest duży czas pracy procesora +, ale po tym otwarciu/zamknięciu PM jest zasadniczo wolny.

+1

Czy istnieje sposób zmuszenia PM do utrzymywania danych poza ich zamknięciem lub zatwierdzeniem transakcji? –

+0

Tak, możesz również zrobić flush(), myślę, że czemu nie po prostu użyć transakcji? – Jacob

Powiązane problemy