2013-05-14 47 views
1

我正在開發連接到數據庫(Oracle或SQLite)的Java應用程序。在數據庫中我存儲合同。該合同的字段爲access_date。我想每天檢查一次該字段,如果有一天access_date將等於當前日期,則將合同標記爲無效。我怎樣才能實現這個?在PHP中,據我所知,這些任務有cron作業,但java或java ee呢?我該怎麼做?提前致謝!如何每天檢查數據庫字段?Cron工作?

+0

Cron以任何方式與PHP無關;它只是一個定期執行任務的調度程序。您可以使用它來運行以任何語言編寫的應用程序/腳本。 – a1ex07 2013-05-14 15:16:22

+0

@ a1ex07那麼你可以給我一些關於cron的信息。因爲我不理解這個概念。 – MainstreamDeveloper00 2013-05-14 15:21:19

+0

檢查http://stackoverflow.com/questions/4816889/running-a-scheduled-task-written-in-java-on-a-linux-server。答案有一個鏈接到crontab手冊。 – a1ex07 2013-05-14 15:28:00

回答

2

您可以通過兩種方式來實現:

  1. 您可以使用cron來調用Java程序在特定的時間(在你的 情況下,一個每天)。
  2. 如果您的Java程序設計爲作爲服務/守護程序(始終保持在後臺)運行,您可以使用作業調度程序(例如Quartz Scheduler)在特定時間調用某種檢查功能。
  3. 作爲2.的擴展名,您可以使用ScheduledExecutorService
0

而不是保存無效的合同屬性,並且必須每天檢查它與sysdate,我會使用謂詞如「access_date < trunc(sysdate)」來查找過期的合同,以及表達式如:

case when access_date < trunc(sysdate) then 'N' else 'Y' end 

...顯示合同是否處於活動狀態。

+0

可以請你解釋一下如何在數據庫中存儲這個謂詞以及如何使用這個表達式。我必須每次都做一個查詢到數據庫或者什麼? – MainstreamDeveloper00 2013-05-14 17:44:47

+0

最好的方法可能是在包含表達式的表格上創建一個視圖作爲附加列並查詢該視圖。 – 2013-05-14 19:00:01