2009-06-24 10 views
5

Interfejsy hibernacji zaimplementowane w celu zapewnienia nasłuchiwania zdarzeń, na przykład: org.hibernate.event.PostInsertEventListener; wszystkie rozszerzenia Serializable.Dlaczego słuchacze cyklu życia są w stanie hibernacji szeregowalne?

Nie wydaje się jednak, aby wyjaśnić, dlaczego słuchacze wymagają serializacji. Przez pewien czas wstrzykiwaliśmy DAO z połączeniami z bazami danych, ale jeszcze się nie udało, jednak obawiam się, że może się zdarzyć, że Hibernate przekaże słuchacza przez łącze zsekwencjonowane, a więc straci bazę danych połączenie.

Pytanie brzmi: Dlaczego programy do rozpoznawania zdarzeń w trybie hibernacji muszą być poddawane serializacji?

Odpowiedz

2

Chociaż nie jestem pewien, czy dobrze rozumiem twoje pytanie, nie wiem, jaki może być problem z serializowalnym detektorem zdarzeń.

Detektor zdarzeń musi być zaimplementowany tak, jakby był singletonem i nie powinien posiadać żadnego stanu w zmiennych instancji.

Tak serializowanie nie powinno stanowić problemu.

Nie można szeregować DAO (z oczywistych względów).

Jeśli naprawdę masz detektor zdarzeń z odniesieniem do DAO, oznacz zmienną instancji DAO jako przejściową. Gdy używasz sprawdzenia DAO dla wartości NULL i jeśli null otrzymasz odpowiednie DAO od DAOFactory.

+0

To ma sens i jest dobrą pracą. Zastanawiam się, dlaczego został oznaczony jako taki - czy Hibernate faktycznie serializuje je. Ponadto, tak naprawdę nie mamy DAOFactory, ponieważ używamy Spring do ich wstrzykiwania. – davidsheldon

Powiązane problemy