2009-06-24 5 views
5

Les interfaces Hibernate que vous implémentez pour fournir des écouteurs d'événement, par exemple: org.hibernate.event.PostInsertEventListener; étendent toutes Serializable. Cependant, cela ne semble pas expliquer pourquoi vos écouteurs doivent être sérialisables. Nous injectons des DAO avec des connexions de base de données depuis un moment, et cela n'a pas encore échoué, mais je crains qu'il y ait un cas où Hibernate passera l'écouteur sur un lien sérialisé, et ainsi perdra la base de données connexion. Donc, la question est: Pourquoi les écouteurs d'événements hibernate doivent-ils être sérialisables?Pourquoi les écouteurs de cycle de vie d'Hibernate Serializable?

Répondre

2

Bien que je ne sois pas sûr de comprendre correctement votre question, je ne sais pas quel pourrait être le problème avec un écouteur d'événement sérialisable.

Un écouteur d'événement doit être implémenté comme s'il s'agissait d'un singleton et il n'est supposé contenir aucun état dans les variables d'instance.

La sérialisation ne devrait donc pas poser de problème.

Un DAO ne peut pas être sérialisé (pour des raisons évidentes).

Si vous avez vraiment un écouteur d'événement avec une référence à un DAO, marquez la variable d'instance DAO comme transitoire. Lorsque vous utilisez la vérification DAO pour null et si null obtenir le DAO appropratie à partir de DAOFactory.

+0

Cela a du sens et c'est un bon travail. Je me demande pourquoi il a été marqué comme tel - Hibernate les sérialise réellement. De plus, nous n'avons pas vraiment de DAOFactory car nous utilisons Spring pour les injecter. – davidsheldon

Questions connexes