ヘッダーをスキップ

Oracle Containers for J2EE Enterprise JavaBeans開発者ガイド
10g(10.1.3.1.0)

B31852-03
目次
目次
索引
索引

戻る 次へ

8 JPA問合せの実装

この章では、次のような、実行時にアクセスできる事前定義済の静的問合せの作成方法について説明します。

詳細は、「JPAエンティティの問合せ方法」を参照してください。

JPA名前付き問合せの実装

名前付き問合せは、作成してコンテナ管理のエンティティに関連付ける事前定義済の問合せです(「アノテーションの使用方法」を参照)。デプロイ時に、OC4JはEntityManagerに名前付き問合せを格納します。実行時に、EntityManagerを使用して、名前付き問合せを取得、構成および実行します。

詳細は、次を参照してください。

アノテーションの使用方法

例8-1に、@NamedQueryアノテーションを使用してJava永続性問合せ言語の問合せを定義する方法を示します。この問合せは、実行時にEntityManagerを使用して名前findAllEmployeesByFirstNameで取得できます。

例8-1    @NamedQueryを使用した問合せの実装

@Entity
@NamedQuery(
    name="findAllEmployeesByFirstName",
    queryString="SELECT OBJECT(emp) FROM Employee emp WHERE emp.firstName = 'John'"
)
public class Employee implements Serializable {
...
}

 

例8-2では、@NamedQueryアノテーションを使用して、firstnameという名前のパラメータを受け取る
Java永続性問合せ言語の問合せを定義する方法を示します。例8-3では、EntityManagerを使用してこの問合せを取得し、
QueryのメソッドsetParameterを使用してfirstnameパラメータを設定する方法を示します。
名前付き問合せでのEntityManagerの使用方法の詳細は、
「EntityManagerを使用したJPAエンティティの問合せ」を参照してください。

オプションで、問合せヒントで名前付き問合せを構成し、JPA永続性プロバイダのベンダー拡張を使用できます(「JPA問合せでのTopLink問合せヒントの構成」を参照)。

例8-2    @NamedQueryを使用したパラメータ付き問合せの実装

@Entity
@NamedQuery(
    name="findAllEmployeesByFirstName",
    queryString="SELECT OBJECT(emp) FROM Employee emp WHERE emp.firstName = :firstname"
)
public class Employee implements Serializable {
...
}

例8-3    名前付き問合せのパラメータの設定

Query queryEmployeesByFirstName = em.createNamedQuery("findAllEmployeesByFirstName");
queryEmployeeByFirstName.setParameter("firstName", "John");
Collection employees = queryEmployessByFirstName.getResultList();

 

JPA動的問合せの実装

EntityManagerのメソッドcreateQueryまたはcreateNativeQueryを使用して、実行時にQueryオブジェクトを動的に作成できます(「Javaの使用方法」を参照)。QueryのメソッドgetResultListgetSingleResultまたはexecuteUpdateを使用して、問合せを実行できます(「問合せの実行」を参照)。

オプションで、問合せヒントで名前付き問合せを構成し、JPA永続性プロバイダのベンダー拡張を使用できます(「JPA問合せでのTopLink問合せヒントの構成」を参照)。

詳細は、次を参照してください。

Javaの使用方法

例8-4に、パラメータを指定して動的EJB QL問合せを作成する方法および問合せを実行する方法を示します。この例では、問合せは複数の結果を返すため、QueryのメソッドgetResultListを使用します。

例8-4    動的問合せの実装および実行

Query queryEmployeeByFirstName = entityManager.createQuery(
    "SELECT OBJECT(emp) FROM Employee emp WHERE emp.firstName = :firstname"
);

queryEmployeeByFirstName.setParameter("firstName", "Joan");

Collection employees = queryEmployeeByFirstName.getResultList();

 

JPA問合せでのTopLink問合せヒントの構成

表8-1に、JPA問合せを構築する場合(例8-5を参照)、または@QueryHintアノテーションを使用してJPA問合せを指定する場合(例8-6を参照)に設定できるTopLink EJB 3.0 JPA永続性プロバイダの問合せヒントをリストします。ヒントを設定する場合、次のようなoracle.toplink.essentials.configの適切な構成クラス内の対応するpublic static finalフィールドを使用して値を設定できます。


戻る 次へ
Oracle
Copyright © 2002, 2008 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引