2011-01-08 54 views
4

我想使用兩個獨立的類(即做不同的事情)對MySQL數據庫執行更新 - 每10秒鐘執行一次,每分鐘執行一次。我在Java知識中有一些缺陷,我想知道實現它的最好方法是什麼。定期用Java更新數據庫

重要的是,如果與數據庫的連接丟失,我需要重新連接嘗試無限期地發生,並且我猜測Prepared Statements的使用會使查詢更有效。數據庫的連接應該一直處於打開狀態還是在正在運行的更新之間關閉?也許我還需要考慮如果類實例將無限期地運行,則清除內存不足的內存。

回答

1

回答第一個問題「如何在特定間隔運行java類?」

您可以使用quartz triggers以時間間隔運行java類。

第二個問題:「如果conn丟失了怎麼辦?」

如果連接打開,那麼在連接時間間隔內運行的類中檢查,然後不嘗試連接,如果丟失,則首先連接到數據庫然後更新數據庫。

第三個問題:「連接應該每次都打開嗎?」

如果你想用非常小的時間間隔做更新,那麼我認爲你應該保持open.but但不知道它。可能是你應該嘗試保持開放。

+0

對於多用戶數據庫,通常最好關閉連接,一旦您不與數據庫進行主動通信。這將允許數據庫的資源被釋放用於其他用途。客戶端系統上的連接池應儘量減少重新連接的成本。 – newdayrising 2011-01-08 13:01:03

+0

是連接池可以是解決方案。 – 2011-01-08 13:05:58

0

我會保持數據庫連接打開,但是請嘗試自己管理打開的連接。使用連接池庫,如Apache DBCP。它允許指定一個validationQuery這在技術上是一個非常簡單的SELECT請求,在實際語句之前執行,用於驗證連接是否仍然存在。在我的應用程序中,這項工作非常穩定(一個應用程序全天候運行;每分鐘查詢一次)。