2009-06-24 9 views
5

Las interfaces de Hibernate que implementa para proporcionar detectores de eventos, por ejemplo: org.hibernate.event.PostInsertEventListener;, todas se extienden Serializable.¿Por qué los oyentes del ciclo de vida se pueden serializar en Hibernate?

Sin embargo, no parece explicar por qué sus oyentes deben ser serializables. Hemos estado inyectando DAOs con conexiones de bases de datos en ellos por un tiempo, y aún no ha fallado, sin embargo, me preocupa que pueda haber un caso en el que Hibernate pase al oyente por un enlace serializado y pierda la base de datos. conexión.

Entonces la pregunta es: ¿Por qué los detectores de eventos de hibernación deben ser serializables?

Respuesta

2

Aunque no estoy seguro de entender su pregunta correctamente, no sé cuál podría ser el problema con un oyente de eventos serializable.

Un detector de eventos debe implementarse como si fuera un singleton y no se supone que contengan ningún estado en variables de instancia.

Por lo tanto, la serialización no debería ser un problema.

No se puede serializar un DAO (por razones obvias).

Si realmente tiene un detector de eventos con una referencia a un DAO, marque la variable de instancia DAO como transitoria. Cuando utiliza la verificación DAO para nulo y si es nulo, obtenga el DAO apropiado de DAOFactory.

+0

Eso tiene sentido, y es un buen trabajo. Me pregunto por qué se ha marcado como tal, Hibernate en realidad los serializa. Además, realmente no tenemos un DAOFactory ya que usamos Spring para inyectarlos. – davidsheldon

Cuestiones relacionadas