JPQLとQueryアノテーション (4/5)
作成:2017-10-28 09:51
更新:2017-10-28 09:51
更新:2017-10-28 09:51
■複数のNamedQueryを用意する
NamedQueryによるクエリー設定は、1つしか用意できないわけではありません。複数のNamedQueryを用意することもできます。
これには、「NamedQueries」というアノテーションを使います。このアノテーションは、複数のNamedQueryを1つにまとめるためのものです。
NamedQueriesの引数には、{}の中に@NamedQueryをカンマで区切って記述していきます。こうすることで、複数の@NamedQueryを用意することが可能です。この@NamedQueryの部分は、@NamedQuery単体で利用する場合とまったく同じです。プレースホルダなどの利用もまったく同様に扱えます。
実際の利用例を下に掲載しておきましょう。ここでは3つの@NamedQueryを用意してあります。これらは、それぞれ以下のような感じに利用することができます。
よく利用する検索クエリーをこのように@NamedQueryとしてまとめておけば、名前とパラメータを用意するだけで簡単に実行できるようになります。
毎回、createQueryでクエリー文を記述して使う場合、何度もクエリーを書かなければいけません。が、@NamedQueryを使えば、あらかじめエンティティクラスに@NamedQueryを定義しておけば、後はクエリーを目にすることはありません。データベースアクセスの処理もだいぶすっきりとしますね!
これには、「NamedQueries」というアノテーションを使います。このアノテーションは、複数のNamedQueryを1つにまとめるためのものです。
@NamedQueries({
@NamedQuery(……略……),
@NamedQuery(……略……),
……略……
})
NamedQueriesの引数には、{}の中に@NamedQueryをカンマで区切って記述していきます。こうすることで、複数の@NamedQueryを用意することが可能です。この@NamedQueryの部分は、@NamedQuery単体で利用する場合とまったく同じです。プレースホルダなどの利用もまったく同様に扱えます。
実際の利用例を下に掲載しておきましょう。ここでは3つの@NamedQueryを用意してあります。これらは、それぞれ以下のような感じに利用することができます。
manager.createNamedQuery("findAllEntity");
manager.createNamedQuery("findEntityIdIs").setParameter("id", 1);
manager.createNamedQuery("findEntityNameLike").setParameter("find","taro");
よく利用する検索クエリーをこのように@NamedQueryとしてまとめておけば、名前とパラメータを用意するだけで簡単に実行できるようになります。
毎回、createQueryでクエリー文を記述して使う場合、何度もクエリーを書かなければいけません。が、@NamedQueryを使えば、あらかじめエンティティクラスに@NamedQueryを定義しておけば、後はクエリーを目にすることはありません。データベースアクセスの処理もだいぶすっきりとしますね!
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
// ※MyDataEntityに追記 import javax.persistence.NamedQuery; import javax.persistence.NamedQueries; @NamedQueries({ @NamedQuery( name="findAllEntity", query="select d from MyDataEntity d" ), @NamedQuery( name="findEntityIdIs", query="select d from MyDataEntity d where d.id = :id" ), @NamedQuery( name="findEntityNameLike", query="select d from MyDataEntity d where d.name like :find" ), })
※関連コンテンツ
「初心者のためのJava Persistence API入門」に戻る