2013-05-08 26 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

相關問題