2.3. クエリのマッピング

2.3.Mapping JPAQL/HQL queries. JPAQL/HQL クエリのマッピング

アノテーションを使用して EJBQL/HQL クエリをマップできます。@NamedQuery@NamedQueries はクラスレベルまたは JPA XML ファイルで定義できます。ただし、\これらの定義はセッションファクトリ/エンティティぃマネージャファクトリスコープに対してグローバルになります。指定されるクエリは名前と実際のクエリ文字列によって定義されます。
<entity-mappings>
    <named-query name="plane.getAll">
        <query>select p from Plane p</query>
    </named-query>
    ...
</entity-mappings>
...

@Entity
@NamedQuery(name="night.moreRecentThan", query="select n from Night n where n.date >= :date")
public class Night {
    ...
}

public class MyDao {
    doStuff() {
        Query q = s.getNamedQuery("night.moreRecentThan");
        q.setDate( "date", aMonthAgo );
        List results = q.list();
        ...
    }
    ...
}
また、hints 属性を介して QueryHint のアレイを使用してクエリにいくつかのヒントを提供することもできます。
利用可能な Hibernate のヒント

表2.2 クエリヒント

ヒント 説明
org.hibernate.cacheable クエリがセカンドレベルキャッシュとやりとりを行うべきかどうか (デフォルトでは false に設定される)
org.hibernate.cacheRegion キャッシュリージョン名 (通常はデフォルト値が使用される)
org.hibernate.timeout クエリタイムアウト
org.hibernate.fetchSize 結果セットフェッチサイズ
org.hibernate.flushMode このクエリに使用されるフラッシュモード
org.hibernate.cacheMode このクエリに使用されるキャッシュモード
org.hibernate.readOnly このクエリでロードされるエンティティを読み取り専用モードにするかどうか (デフォルトで false に設定される)
org.hibernate.comment 生成された SQL に追加されたクエリコメント