Hibernate具有拦截器机制,可让您在特定时间发生数据库事件时得到通知。
此类事件是会话的创建/删除/刷新。当您访问受给定事件影响的对象时,您就有办法在修改给定类的给定对象(可以轻松映射到架构中的表)时触发一个过程。
可以在以下位置找到Javadoc:https://docs.jboss.org/hibernate/orm/4.0/manual/en- US/html/events.html
除了您的用例之外,我还曾在基于Oracle的分区模式中使用拦截器。想法是使用一个技术日期来对某些表进行分区,而挑战在于给定树中的所有对象都具有相同的“分区日期”(如果我们在插入时使用了SYSDATE,那么什么也不会阻止对象树的一部分在第N天有一个分区日期,而树的其余部分在第N + 1天……这在其他一些级别上令人担忧。然后,使用拦截器在插入时沿对象树传播相同的日期。