HibernateのcreateQueryとcreateNativeQueryの違い、JPQLの書き方

データベース
スポンサーリンク

Hibernateには、次の二つのQueryがある。

  • createQuery
  • createNativeQuery

分かりにくいけど、これらは違う。

スポンサーリンク

createQuery とは

CreateQuery は、JPQL (Jakarta Persistence Query Language) を使います。

JPQLについては、以前は、Java Persistence Query Language と呼ばれていたようです。

 

この言語の使い方は以下をご覧ください。

https://qiita.com/opengl-8080/items/e074330b5f4862d9995f

 

createQueryでは、バインド変数は

id1=:a

のように文字として指定して変数をセットします。

 

createNativeQuery とは

createNativeQuery は、ネイティブのSQLを実行可能です。

 

createNativeQueryでは、バインド変数は

id1=?1

のように指定して変数をセットします。

 

ネイティブのSQL文がそのまま使えます。

 

createQueryでなくて、createNativeQueryを使う理由として

  • createNativeQueryの方がローレベルアクセスかのうであり、最適化を自分自身で行える。
  • すでにSQLを知っているのでJPQLを新たに覚えたくない
  • すでに書かれたSQL文があり、それをJPQLに変換するのが手間だ

 

 

コメント