0

Oracle10g (データソース) + Weblogic 10.3 + Eclipselink に基づくシステムがあります。

DAO を使用して Java ソフトウェアを介してデータを挿入または削除すると、すべてのデータがすぐに利用可能になりますが、(SqlDeveloper または java.sql.Connection クラスを使用して) 手動でデータを挿入すると、新しいデータはデータベースから取り込まれません。
なぜそれが起こるのですか?そして、それを修正する方法は?

4

1 に答える 1

1

これは、他の方法でデータベースに変更が加えられたことをEclipseLinkが認識できないために発生します。外部ツールは変更についてEclipseLinkに通知せず、EclipseLinkは可能な変更についてデータベース・コンテンツを常にポーリングしているわけではありません。そのような実装は、パフォーマンスを低下させます。JPQL やネイティブ SQL の DELETE および INSERT クエリなど、JPA 一括操作を介して行われた変更でも同じことが起こります。

問題を実際に解決することはできませんが、共有キャッシュをオフにすると、問題との共存が容易になります。パフォーマンスが低下する可能性があることに注意してください。

JPA 1 の場合:

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

そしてJPA 2では:

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

共有キャッシュの追加として、EntityManager もキャッシュを維持します。単一のエンティティは、 refreshメソッドを使用してデータベースから更新できます。

于 2012-06-26T17:43:24.477 に答える