为什么Hibernate Serializable中的生命周期监听器?

dav*_*don 5 java hibernate

您实现的Hibernate接口提供事件侦听器,例如:org.hibernate.event.PostInsertEventListener;all extend Serializable.

但是,它似乎无法解释为什么您的侦听器需要可序列化.我们已经将DAO与数据库连接注入了一段时间,但它还没有失败,但我担心可能会出现Hibernate通过序列化链接传递监听器的情况,因此会丢失数据库连接.

所以问题是:为什么hibernate事件监听器必须是可序列化的?

jit*_*ter 2

虽然我不确定我是否正确理解你的问题,但我不知道可序列化事件侦听器可能存在什么问题。

事件侦听器必须像单例一样实现,并且它们不应该在实例变量中保存任何状态。

所以序列化应该不是问题。

DAO 无法序列化(出于显而易见的原因)。

如果您确实有一个引用 DAO 的事件侦听器,请将 DAO 实例变量标记为瞬态。当您使用 DAO 时,检查是否为 null,如果为 null,则从 DAOFactory 获取适当的 DAO。