2010-09-15 76 views
3

我有一個使用java,jsp,servlets實現的web應用程序。每當我在數據庫表中更新時,我的DAO中的數組列表應該被更新。有沒有更好的解決方案。關於數據庫更新的問題

解決方案

  1. 創建豆線程和查詢數據庫,如果找到的更新,然後重新填充數組列表。
  2. 來自客戶端使用輪詢概念發送ajax請求。

請讓我知道解決方案,即使可能使用任何框架。

回答

1

DAO中的數組列表?這聽起來不對。 DAO類本身不應該包含任何數據。你也不應該在會話中存儲數據,而只是讓客戶端在每個新的HTTP請求上加載它。您遇到的任何性能問題都可以通過使用連接池並在必要時使用二級緩存來解決。關於觸發一個或其他更新,有幾種方法來實現這一點。在服務器端重新構建「陣列列表」至少沒有意義。該請求必須來自客戶端。 Ajax輪詢確實是最好的方法之一。另一種方法是使用<meta http-equiv="refresh" content="60">頭以間隔(例如,每分鐘一次)無間斷地刷新JSP頁面,以便它重新查詢數據庫中的數據。這是最簡單的,但用戶最不友好的。至於框架,我建議jQuery和/或JSF爲此。

1

所以首先與BalusC一致,你真的不應該在DAO中存儲任何數據!這是一個DAO,這個類的主要目的是查詢數據庫來檢索數據,理解這個概念將幫助你很好地理解如何實現更新。 就更新而言,您需要考慮應用程序的工作方式是如何頻繁更新數據庫,以便用戶可以像記分牌一樣查看數據庫,因此對於此應用程序可能必須是半活的更新線程應該運行,如果在Java中,或者如果使用jsp servlets上述方法將是一個很好的折衷。如果你的應用程序是用戶驅動的,那麼我會建議檢索用戶第一次請求的數據,然後不再次,除非用戶檢查該頁面不需要任何額外的編碼,因爲我想你的設置就足夠了。

請不要經常通過一個線程來重新填充數組列表,這會對您的應用程序的性能和可維護性產生影響。

當考慮數據庫訪問時,我將此用作一般經驗法則,實時vs用戶驅動的應用程序需要不同的模型。

+0

感謝您的回答。我無法理解更新線程和上述方法中的以下幾行:「考慮您的應用程序如何工作,將會頻繁更新數據庫,用戶打算像記分牌一樣查看數據庫,因此必須對此進行半活也許更新線程應該運行,如果在Java中,或者如果使用jsp servlets上述方法將是一個很好的折衷「 – 2010-10-15 17:56:29

+1

是的,所以基本上我的意思是,如果你的應用程序是打算顯示數據的生活,對用戶必須查看的數據進行重大更改並更新線程將是必要的,否則基於請求的更新將更容易,希望這有助於Suresh。 感謝Chris – Chris 2010-10-15 19:32:28

+0

半活:當你說在java或jsp上更新線程時,客戶端將如何看到最近的data.i表示代碼邏輯。 – 2010-10-19 08:52:57