2013-05-08 52 views
1

我使用休眠来将提示实体存储在mysql数据库中。 现在,只要提醒时间到期,我需要将事件触发到应用程序中。当提醒时间到期时自动事件触发。可以使用休眠来完成吗?

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

我也读过关于配置cron作业,但我需要在应用程序中按时提醒事件,因为提醒通知必须显示在用户GUI上。

任何建议将不胜感激。

回答

1

看看石英(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); 
+0

是的,很好的答案。 – 2013-05-08 17:43:04

相关问题