【问题标题】:Why are life-cycle listeners in Hibernate Serializable?为什么 Hibernate 中的生命周期侦听器是可序列化的?
【发布时间】:2009-06-24 18:27:11
【问题描述】:

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

但是,它似乎无法解释为什么您的侦听器需要可序列化。我们已经将带有数据库连接的 DAO 注入其中一段时间​​了,它还没有失败,但是我担心 Hibernate 可能会通过序列化链接传递侦听器,从而丢失数据库连接。

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

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

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

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

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

    DAO 不能被序列化(原因很明显)。

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

    【讨论】:

    • 这是有道理的,而且是一个很好的解决方法。我想知道为什么它被标记为这样 - Hibernate 实际上是否序列化它们。此外,我们并没有真正的 DAOFactory,因为我们使用 Spring 来注入它们。
    猜你喜欢
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    相关资源
    最近更新 更多