Cayenneを用いたWHERE句の作り方

SQLで特定の値(”あるカラムでTrueのもの” 等)を持ったデータを引っ張りたい場合、WHERE句等による条件検索が便利でした。以前はデータベースに関する処理が煩雑だったらしいのですが、ORM(オブジェクト関係マッピング)と呼ばれるデータベースに格納されているデータとJavaで扱うデータを対応付ける手法によって、アクセスはより簡潔になったといいます。その一例として(?)、Cayenneというフレームワークがあります。このページの3ページ目が特にわかりやすかったです。

まずExpressionとSelectQueryのオブジェクトを作ります。ExpressionのオブジェクトはSQLのWHERE句の条件を記述するために作ります。また、SelectQueryのオブジェクトは、SelectQueryが持っているメソッドを使うために作ります。下に例として定義を引用しているのですが、ここで利用しているExpressionFactoryとは、Cayenneで用意されている、Expressionオブジェクトを生成するためのヘルパー・クラスです。クラスにあるメソッドを使うことで、よりオブジェクト指向的らしく条件を書くことができます。

Expression exp01 = ExpressionFactory.matchExp(EipTTodo.PUBLIC_FLAG_PROPERTY, "T");
SelectQuery query = Database.query(EipTTodo.class);

こうして作成した条件は、SelectQueryやExpressionのメソッドを使って組み合わせてクエリにセットしていくことが出来ます。

query.setQualifier(exp1);//条件のセット
query.andQualifier(exp2);//AND式
.orExp()
.andExp()

まだまだ理解すべき点はありますが、Cayenneの下にあるディレクトリ(com.aimluck.eip.cayenne.om.portletの下周辺)を見ると、全体の像が少し掴みやすかったです。Cayenneを用いたメソッド等を見ると、全般的に見慣れない文字列が大量にあり、かなり時間がかかってしまいました。しかしお陰様で、データベースと処理をするJavaのクラスの間の動きの理解を、表面的ではありますが進めることができました。以下は参考にさせていただいたページです。

http://www.atmarkit.co.jp/fjava/products/cayenne/cayenne_1.html

http://k2work1.blogspot.jp/2008/10/cayennein.html