Criteria API
Criteria API は、Java™ Persistence Query Language (JPQL) 照会のストリングを作成する代替方法として、Java オブジェクトを使用して照会を作成するための API です。
Criteria API では、実行時に照会を動的に作成できます。また、コンパイラーによる検証が可能なタイプ・セーフな照会を作成することもできます。JPQL 照会の正確さはコンパイラーでは検証できないため、テスト中の実行時に検証する必要があります。
就業年数が 5 年未満の従業員のリストを戻すサンプル JPQL 照会を以下に示します。
SELECT e FROM Employee e WHERE e.serviceyears < 5
同等の Criteria 照会のサンプルを以下に示します。QueryBuilder qb = emf.getQueryBuilder();
CriteriaQuery q = qb.create(Employee.class);
Root e = q.from(Employee.class);
q.where(qb.lt(e.get(Employee_.serviceyears), 5));
TypedQuery tq = em.createQuery(q);
List result = q.getResultList();
注: Employee_ は、Employee クラスのメタモデルです。
JPQL の 2 つの重要な機能が改善されました。
- Criteria API では、JPQL では表現できない照会を表現できます。詳しくは、developerWorks® の記事『Dynamic, typesafe queries in JPA 2.0』の『Editable data store expressions』セクションを参照してください。
- CriteriaQuery はプログラマチックに編集できます。詳しくは、developerWorks の記事『Dynamic, typesafe queries in JPA 2.0』のセクション『Editable query』を参照してください。