3.3. クエリのマッピング
3.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 のヒント
ヒント | 説明 |
---|---|
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 に追加されたクエリコメント |