我是数据库和hibernate的新手。我创建了学生注册项目,当有记录插入学生个人表时,我需要收到警报或任何消息。这样我就可以从新插入的记录中获取电子邮件ID,并向学生发送欢迎或一些消息。我已经完成了发送消息部分。现在我需要了解在数据库中发生任何更改时获取警报,这将有助于为我维护整个数据库。希望这就足够了。
有人说Hibernate Envers很有用,有些人说在mysql中使用触发器会有所帮助。请告知使用hibernate获取警报的最简单方法。
答案 0 :(得分:0)
您可以扩展EmptyInterceptor类并实施onFlushDirty
方法
public boolean onFlushDirty(Object obj, Serializable id, Object[] newValues, Object[] oldValues, String[] properties, Type[] types) throws CallbackException {
if (obj instanceof Student) {
// send email alert...
创建会话时使用拦截器:
session = sessionFactory.openSession(interceptor);
答案 1 :(得分:0)
您可以使用JPA2回调注释(如果您的服务器是唯一写入数据库的实例):
http://www.objectdb.com/api/java/jpa/annotations/callback
在你的情况下是postpersist和/或postupdate
@Entity
public class Student{
@PostPersist
public void onPostPersist() {
sendMsg();
}
}
答案 2 :(得分:0)
当您保存或更新记录时,将立即识别执行结果;因此,如果成功执行(记录保存或更新),您可以向用户发送消息。为什么要让hibernate麻烦提醒你
对于数据库的每周或每月报告,您可以添加其他字段来实现该目的。对于学生信息,添加create_time
和update_time
,然后使用一些SQL聚合生成报告的功能。