我正在開發一個使用Eclipse IDE,EclipseLink,JPA和MySQL的應用程序。在應用程序的首次發佈期間,我需要刪除表格的內容。但是,在刪除應用程序後,建立新的連接仍會從空表讀取舊數據。 我最初的做法是每次執行操作時創建一個new EntityManager
。JPA緩存未失效
private EntityManager entityManager;
public FacadeFactory() {
entityManager = DBConnection.connect();
}
禁用JPA緩存後,問題就解決了。
由於性能問題,EntityManager
已更改爲Singleton,以便只打開一個到數據庫的連接。
private static FacadeFactory instance;
private EntityManager entityManager;
private FacadeFactory() {
entityManager = DBConnection.connect();
}
public static FacadeFactory getInstance(){
if(instance == null){
instance = new FacadeFactory();
}
return instance;
}
現在,即使緩存仍然被禁用,我仍然遇到與以前相同的問題。我試圖從persistence.xml
和代碼中禁用緩存,但它們都不適用於我。
<property name="eclipselink.cache.shared.default" value="false"/>
entityManager.getEntityManagerFactory().getCache().evictAll();
任何人都可以幫我嗎?
什麼樣的性能問題在使用新的EntityManager時有什麼要求?它們應該是輕量級的,我能看到的唯一的主要好處應該是你想禁用的附加緩存 – Chris
@克里斯,我注意到了d每次創建新的EntityManagers時,程序運行速度會稍微慢一些。 – sebi