2010-04-13 57 views
3

在我的項目中我有一個數據庫,許多客戶端連接到。併發訪問和書寫效果很好。現在的問題不是每秒鐘從數據庫重新加載數據以始終具有數據的當前狀態。Eclipselink和更新觸發器多次訪問數據庫

Eclipselink在數據庫更改後自動提供觸發機制(自動?)重新加載數據? 如何使用此觸發器?

謝謝!

+0

複製您的評論: 在視圖中這是一個數據庫表的內容的表示,用戶可以可以用一個單獨的對話框中輸入一些數據。這可以由使用相同數據庫的許多計算機上的許多用戶完成。例如。一個用戶必須手動點擊「刷新」按鈕來查看其他用戶輸入的內容。我想自動化這一步,所以用戶不必手動點擊刷新按鈕,但不知何故,我有一個觸發方法,由eclipselink調用,因此視圖可以自動更新。希望這可以讓我的願望更加清晰。 - Raven 8小時前 – 2010-04-26 20:03:57

+0

這可能是可能的,但我不認爲你可以使它與JPA很好地發揮。我認爲,無論何時,如果您仍然對服務器端組件感興趣,那麼您就必須沖洗eclipselink緩存。然後,研究「更改通知」。在SQL標準中我沒有這方面的支持,所以每個DBMS都有不同的表現。我唯一熟悉的就是Postgres的LISTEN和NOTIFY,你可以將它與觸發器結合起來以獲得這種行爲。 – 2010-04-26 20:14:50

回答

3

我見過的一個解決方案是使用數據庫中的觸發器嚮應用程序發送JMS消息。然後在MDB中接收該消息,EclipseLink緩存可以失效或刷新。這種方法適用於Oracle數據庫,觸發器將消息放入AQ表中。

這些都是我熟悉的DBMS特定解決方案,但挑戰始終是要獲取更改通知,以包含表格和PK值而不是ROWID,並且還要確保不會收到有關您自己或所做更改的通知通過某種方式可以輕鬆地從您自己的更改中濾除通知。

我相信GoldenGate有助於解決這個問題,但還沒有嘗試過自己。

道格