提醒时间到期时自动触发事件。可以用hibernate完成吗?

时间:2013-05-08 10:56:22

标签: java hibernate events reminders

我使用hibernate将提醒实体存储在mysql数据库中。 现在,只要提醒时间到期,我就需要在应用程序中激活一个事件。

我应该如何实现这一点,我已经浏览了hibernate拦截器和事件。基本上在创建,保存,更新或删除时触发,而我需要监视表中的一个字段并在提醒时间到期时触发事件。

我还阅读了有关配置cron作业的内容,但我需要在应用程序中按时启动该事件,因为必须在用户GUI上显示提醒通知。

任何建议都将受到最高的赞赏。

1 个答案:

答案 0 :(得分:1)

看一下Quartz(http://quartz-scheduler.org/)。它为您提供了一些可能性。 一种可能性是在存储提醒实体的同时安排提醒作业。 或者(可能更有效),您可以安排定期运行的作业,并在数据库中查询在下次运行之前到期的提醒实体。然后,此定期作业将为每个提醒实体安排提醒作业。 提交石英作业的示例代码:

Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();

JobDataMap map = new JobDataMap();
/* put anything necessary here. */

JobDetail job = JobBuilder.newJob()
        .withIdentity("MyReminderJobName")
        .withDescription("Reminder Job")
        .usingJobData(map)
        .ofType(MyReminderJob.class)
        .build();       

SimpleScheduleBuilder once = simpleSchedule().repeatSecondlyForTotalCount(1);
Date reminderDate = new Date(); //reminder event date


Trigger trigger = newTrigger()
        .forJob(job)
        .withSchedule(once)
        .startAt()             
        .build();

scheduler.scheduleJob(job, trigger);