2014-09-22 183 views
1

我們目前有一個基於java的應用程序,它使用JPA通過eclipselink對單個MS SQL服務器,這是運行在內部網絡的系統上。 這工作正常。JPA eclipselink緩存和數據庫複製

現在我們需要在DMZ中添加第二個sql數據庫實例,它有自己的應用程序和JPA eclipselink。 (外部訪問應用程序的子集)

兩個應用程序都應該看到相同的數據,這意味着我將不得不在兩者之間進行一些複製。 MS SQL有一個合併複製系統可以滿足我們的需求。 但我在這裏與JPA緩存鬥爭。

當數據直接由數據庫複製進行更改時,如何/何時使本地jpa緩存失效?

還是有一個基於java/jpa/jdbc的複製可用於這樣的設置?

關於如何處理這種情況的任何其他想法?

+0

這JPA緩存清除? l1(實體經理)還是l2(EMF)? – 2014-09-22 09:06:58

+0

EMF肯定,但I1也會很好,否則我們將失去更新... – 2014-09-22 09:28:23

回答

1

EMF L2緩存使用

emf.getCache().evictAll() 
+0

是的,我知道這一點,但我怎麼知道什麼時候調用它,當數據庫正在複製低於Java VM級別? – 2014-09-22 10:10:31

+0

明確超出了JPA的範圍,只有您知道何時完成複製(或者通過JDBC或JPA本地查詢調用某些數據庫來查找) – 2014-09-22 10:15:45