Criteria APIの利用 (1/6)
作成:2017-10-28 09:56
更新:2017-10-28 09:56
更新:2017-10-28 09:56
■Criteria APIとは?
JPAの基本的な使い方を見て、「あんまりJavaらしくないな」と感じた人もいたかも知れません。createQueryメソッドでQueryを作成し利用するやり方は、JPQLでクエリー文を記述し実行します。また@NamedQueryアノテーションを使う場合も、結局はJQPLで実行内容を記述しておく必要があります。
JPQLは、SQLと異なり、データベースによって微妙に内容が異なるようなことはありません。データベースごとに異なるSQLの差異を吸収してくれるため、SQL利用時のように「使っているデータベース特有の方言」を気にする必要がありません。これは大きな利点です。
が、依然として、「Javaとは異なる、データアクセスのための専用言語を使って処理を書かないといけない」という、Javaからデータベースを利用する際の根本的な問題は解決できていないことになります。
もっとJavaらしいやり方はないのでしょうか。例えば、データベースアクセスに関するさまざまなメソッドを組み合わせて呼び出すことで、SQLやJPQLと同様の機能を実現できないのでしょうか。
まさに、この考え方によって構築されているのが「Criteria API」と呼ばれるメソッド群です。これは、JPQLに用意された「句」をメソッドにより実装するものです。Criteria APIのメソッドを必要に応じて組み合わせることで、内部的にJPQLのクエリー文を生成し実行できるようにします。コード上は、JPQLのクエリー文は一切見えず、ただ「必要なメソッドを呼び出しているだけ」ですから、Java以外の言語を使っているという感覚はまったくありません。
このCriteria APIは、javax.persistence.criteriaパッケージにクラスとしてまとめられています。この機能の基本的な使い方について説明をしましょう。
JPQLは、SQLと異なり、データベースによって微妙に内容が異なるようなことはありません。データベースごとに異なるSQLの差異を吸収してくれるため、SQL利用時のように「使っているデータベース特有の方言」を気にする必要がありません。これは大きな利点です。
が、依然として、「Javaとは異なる、データアクセスのための専用言語を使って処理を書かないといけない」という、Javaからデータベースを利用する際の根本的な問題は解決できていないことになります。
もっとJavaらしいやり方はないのでしょうか。例えば、データベースアクセスに関するさまざまなメソッドを組み合わせて呼び出すことで、SQLやJPQLと同様の機能を実現できないのでしょうか。
まさに、この考え方によって構築されているのが「Criteria API」と呼ばれるメソッド群です。これは、JPQLに用意された「句」をメソッドにより実装するものです。Criteria APIのメソッドを必要に応じて組み合わせることで、内部的にJPQLのクエリー文を生成し実行できるようにします。コード上は、JPQLのクエリー文は一切見えず、ただ「必要なメソッドを呼び出しているだけ」ですから、Java以外の言語を使っているという感覚はまったくありません。
このCriteria APIは、javax.persistence.criteriaパッケージにクラスとしてまとめられています。この機能の基本的な使い方について説明をしましょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
※関連コンテンツ
「初心者のためのJava Persistence API入門」に戻る