この項では、次の項目に関する情報を提供します。
特定のID(キー)を使用してエンティティをCoherenceキャッシュから取得するには、em.find(Entity.class, ID)
を使用します。
たとえば、em.find(Employee.class, 8)
を使用すると、キー8を持つエンティティがCoherenceのEmployeeキャッシュから取得されます。
エンティティがCoherenceキャッシュ内に見つからない場合、TopLinkはデータベースに対してSELECT
文を実行します。結果が見つかると、エンティティが構成されてCoherenceに挿入されます。
特定の選択基準に一致するエンティティを取得するには、em.createQuery("...")
を使用します。たとえば、em.createQuery("select e from Employee e where e.name='John'")
を使用すると、Johnという名前を持つ従業員を検索するために、SELECT文がデータベースに対して実行されます。
問合せの具体的な動作は、Coherenceのキャッシュ構成によって異なります。
グリッド・キャッシュ: 問合せでは常にデータベースがチェックされます。
グリッド読取りおよびグリッド・エンティティ: 問合せではCoherenceキャッシュがチェックされます。Coherenceにエンティティが存在しない場合は、データベースが問合せされます。
問合せヒントを使用すると、問合せをCoherenceキャッシュではなくデータベースに送ることができます。
CacheStore/CacheLoader: 非主キー問合せではデータベースがチェックされます。主キー問合せは最初に、Coherenceキャッシュに対して実行されます。
Coherenceを問い合せる際は、次の制限事項に注意してください。
JPQLバルク更新および削除: このリリースのTopLink Gridでは、JPQLバルク更新および削除をサポートしていません。
結合: Coherenceのフィルタ・フレームワークは単一キャッシュに制限されているため、JPQLの結合問合せをフィルタに変換することはできません。すべての結合問合せはデータベースに対して実行されます。
問合せ結果のオブジェクト構成のコストを回避するために、Coherenceが引き続き使用されます。
予測問合せ: このリリースのTopLink Gridでは、予測問合せ(レポート)をサポートしていません。