2012-06-26 40 views
0

我有一個基於Oracle10g(數據源)+ Weblogic 10.3 + Eclipselink的系統。
Weblogic + JPA不會刷新Oracle數據庫的數據

如果我通過帶有DAO的Java軟件插入或刪除數據,所有數據立即可用,但如果手動插入數據(通過SqlDeveloper或使用java.sql.Connection類),則新數據不會從數據庫中帶來。
爲什麼會發生?以及如何解決它?

回答

1

發生這種情況是因爲EclipseLink無法意識到通過其他方法對數據庫所做的更改。外部工具不會通知EclipseLink有關更改,EclipseLink也不是所有時間輪詢數據庫內容的可能更改。這樣的實現會導致性能下降。通過JPA批量操作進行的更改也會發生,例如JPQL和原生SQL DELETE和INSERT查詢。

你無法真正解決這個問題,但當你打開共享緩存時,更容易忍受它。注意可能的性能影響。

在JPA 1:

<property name="eclipselink.cache.shared.default" value="false"/> 

和在JPA 2:

<shared-cache-mode>NONE</shared-cache-mode> 

作爲補充共享高速緩存的,還保持的EntityManager緩存。單個實體可以通過refresh方法從數據庫中刷新。