http://www.seshop.com/event/dev/2007/−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−オブジェクト倶楽部は、デブサミ2007を応援します。〜」どちらもきっと期待を裏切らないこと間違いなし。┗【新年ご挨拶】みなさんこんにちは。オブジェクト倶楽部事務局長の天野勝です。新しい年を迎えました。このメールマガジンも、2003年に創刊してから、足掛け5年になりました。ここまで続いているのも、このメルマガを購読されている方、記事を執筆をしてくれる方、編集をしてくれる方のおかげです。この場をお借りして感謝いたします。本年も、執筆陣の熱い想いが届くように、情報発信に取り組んでいきます。多くの方に、なにかしらのきっかけや、場を提供できればと思っています。これからもオブジェクト倶楽部にご期待ください。2007でスティーブジョブスの基調講演があります。品の発表があるのではないかと。更あたりが発表されるのではないかと思います。前回までは、関連先データを登録する際の手順を解説しました。今回は、関連先を含めた複雑な検索の方法についてを解説します。JDBCを使ってテーブルから検索する場合、関連先のオブジェクトを取得するには、テーブルジョインを使って検索できたResultSetから、複数のオブジェクトを生成し、値をセットする必要がありました。結果を正しくマッピングしたりすることは、簡単な作業ではありませんでした。O/Rプログラミングでは違います。検索条件の指定はより直感的で、オブジェクトの関連さえわかれば、テーブルの結合条件を考える必要はありません。値のマッピングは最も得意とするところです。検証用データを準備しましょう。ビデオテーブルに、以下のようなデータを登録しておきます。会員テーブルに、以下のようなデータを登録しておきます。1990-10-10貸出テーブルに、以下のようなデータを登録しておきます。蓬莱島」を、借りています。この状況で、タイトルに「紅」が入っているビデオの貸出状況を検索してみましょう。JDBCでプログラミングした場合、以下のようなWHERE句が必要になるでしょう。member.id」を同じWHERE句の中で指定する必要があり、混乱の元になりがちです。これをCayenneのコードで解説します。今回はExtendsSearchというクラス名にしています。}}何はともあれ実行してみましょう。タイトルが問われたら「紅」と入力します。紅蓮の蓬莱島すると、このようにタイトルに紅を含むビデオの貸出状況がわかります。先の条件で検索する場合、検索条件はこれまでどおりExpressionFactory.likeExpで作ることができます。重要なのはその第一引数です。索対象の主オブジェクトは貸出(Lending)です。検索条件はビデオのタイトルですので、Lendingからの検索パスを記述する必要があります。文字列で表すと「toVideo.title」という書き方が、ビデオのタイトルになります。toVideoはCayenneのモデラで割り当てた(自動的に付けられた)関連名称です。このサンプルでは実行時に省略A、省略B、省略Cとしたところで、会員を別途検索しています。貸出状況を表示する際に会員名を使っているので、Cayenneが自動的に判断して検索してくれているのです。これはこれで便利なのですが、何度もSQL文を実行するのは効率的ではありません。Cayenneでは、このような関連先のデータを一度で取得したい場合、addPrefetchメソッドを使うことで解決することができます。mainメソッドに追加してみましょう。context.performQuery(query);SelectQueryオブジェクトに、クエリ時にまとめて取得する関連先を設定しておくだけでOKです。再度実行してみましょう。紅蓮の蓬莱島すると、上記のように最初のクエリで全て検索が実行され、lending.getToMember().getName()のタイミングでは検索が実行されていないことがわかると思います。次に同じような考え方で、紅というタイトルを含むビデオを「借りている人」を検索してみることにしましょう。検索対象をMemberにするということです。この場合mainメソッドは、以下のようになります。}会員から借りているビデオタイトルまで関連をたどると、会員->貸出->ビデオのようになります。これを関連名称で表現すると、「lendingArray.toVideo.title」となります。会員から貸出は複数ありえるので、関連先Arrayという関連名になっています。先でもドット(.)結合で表現することができます。羅武さんが借りているビデオ」に「クロノクルセイド」が入っていないことです。この検索モデルでは、タイトルに紅を含むビデオを借りている人なので、対象となった人からみた場合も、借りているビデオは紅を含むものだけになります。タイトルに紅を含まない「クロノクルセイド」は検索対象にならないのです。数回に渡って関連に関する技術を解説してきました。作を簡単にするだけでなく、オブジェクトの永続化に役立つということがわかっていただけたのではないでしょうか?次回は複合検索条件について解説する予定です。(きしだ)_______________________________________________________________________この記事への評価にご協力をお願いします。URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用のブラウザに表示されれば投票完了です。はじめにあけましておめでとうございます。本年もよろしくお願い申し上げます。2007年一発目のアジャツールは、かなり趣味の世界に入ってしまいますがご了承ください。この業界にいると、文書やメモをソフトウェア上で書いてしまうことが多いはずです。作業メモ、Todoリスト、日記、議事録などなど。筆者はテキストエディタ(Vim)を愛用していますが、アウトラインプロセッサや、ワード、Webアプリケーションなど様々なソフトウェアがあり、読者の皆さんもそれぞれ使い分けられていると思います。筆者はここ2年で、手書きの頻度が以前に比べて飛躍的に上がりました。