| OS | クロスプラットフォーム |
|---|---|
| Webサイト | eclipse-ee4j.github.io/jakartaee-tutorial/#the-jakarta-persistence-query- language |
| 影響を受けた | |
| SQL、Hibernate | |
Jakarta Persistence Query Language ( JPQL、旧称Java Persistence Query Language) は、プラットフォームに依存しないオブジェクト指向 クエリ言語[1] : 284、§12 であり、 Jakarta Persistence (JPA、旧称Java Persistence API) 仕様の一部として定義されています。
JPQLはリレーショナルデータベースに格納されたエンティティに対してクエリを実行するために使用されます。これはSQLに大きく影響を受けており、そのクエリは構文がSQLクエリに似ていますが、[1] : 17、§1.3、 データベーステーブルを直接操作するのではなく、JPAエンティティオブジェクトに対して操作します。[1] : 26、§2.2.3
JPQL は、オブジェクトの取得 (クエリ) に加えてSELECT、セット ベース クエリもサポートしUPDATEますDELETE。
例
簡潔にするために、例の JPA クラス、ゲッター、セッターは省略されています。
@Entity
パブリッククラスAuthor { @Id private Integer id ; private String firstName ; private String lastName ; @ManyToMany private List < Book > books ; } @EntityパブリッククラスBook { @Id private Integer id ; private String title ; private String isbn ; @ManyToOne private Publisher発行者; @ManyToMany private List < Author > authors ; } @EntityパブリッククラスPublisher { @Id private Integer id ; private String name ; private String address ; @OneToMany ( mappedBy = "publisher" ) private List < Book > books ; }
すべての著者のリストをアルファベット順に取得する簡単なクエリは次のようになります。
SELECT a FROM Author a ORDER BY a . firstName , a . lastName
XYZ Press によってこれまでに出版された著者のリストを取得するには:
SELECT DISTINCT a FROM Author a INNER JOIN a . books b WHERE b .publisher . name = 'XYZ Press' を選択
JPQL は、コロン ( :) で始まる名前付きパラメータをサポートしています。次のように、指定された姓を持つ著者のリストを返す関数を記述できます。
javax.persistence.EntityManagerをインポートします。javax.persistence.TypedQueryをインポートします。
...
public List < Author > getAuthorsByLastName ( String lastName ) { String queryString = "SELECT a FROM Author a " + "WHERE a.lastName IS NULL OR LOWER(a.lastName) = LOWER(:lastName)" ;
TypedQuery < Author > query = getEntityManager ( ). createQuery ( queryString , Author.class ) ; query.setParameter ( " lastName " , lastName ); return query.getResultList ( ) ; }
Hibernate クエリ言語
JPQL は、 Hibernateオブジェクトリレーショナル マッピングライブラリに含まれる以前の非標準クエリ言語であるHibernate Query Language (HQL)に基づいています。
Hibernate と HQL は JPA 仕様より前に作成されました。Hibernate 3 以降、JPQL は HQL のサブセットです。
引用
- ^ abc バウアー、キング&グレゴリー 2016年。
参考文献
- バウアー、クリスチャン、キング、ギャビン、グレゴリー、ゲイリー (2016)、Java Persistence with Hibernate (第 2 版)、Manning Publications、ISBN 978-1617290459
参照
外部リンク
- 公式サイト
- Jakarta EE 8 チュートリアルからの完全なクエリ言語構文
- JPA クエリと JPQL - ObjectDB マニュアルの章
- 型安全な Hibernate (HQL) クエリ エンジン - TorpedoQuery
