【问题标题】:How to implement triggers in hibernate如何在hibernate中实现触发器
【发布时间】:2026-01-29 09:20:06
【问题描述】:

我想在休眠中实现类似于触发器的东西。

我需要的是当表中的列达到特定值时,应该在另一个表中插入一行,或者应该更新其他表。

如何在 hibernate 中实现这一点?

【问题讨论】:

    标签: java hibernate triggers


    【解决方案1】:

    Chapter 14. Interceptors and events 中对此进行了描述。

    例如,您可以拦截更新后事件。

    但是,将事件系统用于业务操作可能不是最好的主意(它们最适合用于基础设施问题)。您应该为此使用更高级别的层。

    【讨论】:

    • 嘿,请您详细说明为什么在这种情况下使用事件系统可能不是一个好主意.. 有没有我没有看到的问题??
    • @Juzer 这只是被认为是好的做法。您的数据层应该简单而笨拙,而您的服务层应该完成大部分工作。为响应事件而创建新数据属于服务层,而不是数据层(尽管在数据层中可能更容易实现)。
    • I'm asking here 这样的时间戳呢?有人会使用事件系统还是拦截器?
    • 有没有一种方法可以拦截或监听 saveAll(List..) 方法的列表?
    • @JonathanJohx 我建议将其作为一个单独的问题提出。这是一个 8 年前的答案,我已经 5 年没有使用 NHibernate 了。