2011-08-18 96 views
1

在我們的java/j2ee應用程序中,我們已經啓用了hibernate和hibernate緩存。但由於某些商業原因,我們必須還有一種後門,我們應該能夠更新數據庫中的某些列。Hibernate緩存。後門問題

當我們這樣做時,休眠緩存沒有得到更新。所以我們現在唯一的選擇是重新啓動應用程序(在jboss 6上運行)。

現在這發生在CIT /臨時環境中。應用程序將在星期一開始生活,並且在那裏顯然會導致無法重新啓動應用程序。

有關如何解決這個問題的任何建議? (除了禁用休眠緩存,這是我最後的回退解決方案)

回答

1

不要直接在數據庫中執行它。通過Hibernate在應用程序中創建一個安全的頁面,它可以完成你想要的任務。它是直接更新實時數據庫的一個主要想法,因爲你可以很容易地搞定它。這個受控制的頁面將會限制傷害,但仍然允許你做你需要做的事情。

+0

再次..這是現在沒有問題。如果你喜歡爲什麼,我可以單獨討論:)。這些東西計劃在未來6個月內進行開發。但有沒有什麼辦法可以完成這個沒有網頁/重新啓動應用程序? –

+1

我不這麼認爲。直接更新DB在Hibernate之外,所以它的緩存將不知道這些更新。這是高速緩存的經典問題。 – atrain

+0

在更新數據庫(使用某個管理URL)後,您可以清除緩存(使用SessionFactory.getCache()。evictXxx),但緩存在整個數據庫更新過程中將失效。 –