2009-06-24 8 views
5

Die Hibernate-Schnittstellen, die Sie implementieren, um Ereignislistener bereitzustellen, zum Beispiel: org.hibernate.event.PostInsertEventListener; alle erweitern Serializable.Warum sind Life-Cycle-Listener in Hibernate serialisierbar?

Allerdings scheint es nicht überall zu erklären, warum Ihre Zuhörer serializable sein müssen. Wir haben DAOs schon seit einiger Zeit mit Datenbankverbindungen in Verbindung gebracht, und es ist noch nicht gescheitert, aber ich mache mir Sorgen, dass Hibernate den Listener über eine serialisierte Verbindung passieren und die Datenbank verlieren könnte Verbindung.

Die Frage ist also: Warum müssen Sie Hibernate-Ereignis-Listener serializable sein?

Antwort

2

Obwohl ich bin nicht sicher, ich verstehe Ihre Frage richtig weiß ich nicht, was das Problem mit einem serializable Ereignis-Listener sein könnte.

Ein Ereignis-Listener hat umgesetzt werden, als ob es ein Singleton war und sie keinen Zustand in Instanzvariablen halten soll.

Serialisierung sollte also kein Problem sein.

Ein DAO kann (aus offensichtlichen Gründen) nicht serialisiert werden.

Wenn Sie wirklich ein Ereignis-Listener mit einem Verweis auf ein DAO haben, markieren Sie die DAO-Instanz-Variable als vorübergehend. Wenn Sie die DAO-Prüfung für null verwenden und wenn null das appro Pratie-DAO aus der DAOFactory abrufen.

+0

Das macht Sinn und ist eine gute Arbeit um. Ich frage mich, warum es als solches markiert wurde - wird es von Hibernate tatsächlich serialisiert? Auch haben wir nicht wirklich eine DAOFactory, wie wir Spring verwenden, um sie zu injizieren. – davidsheldon

Verwandte Themen