始めるO/Rプログラミング[9]スティーブジョブスが2/24に52歳の誕生日を迎えました。向こうの誕生日では家族でハッピーバースディとか歌っちゃうんですかね〜。日にはハッピーバースディを歌います・・・(欧米かっ!)それはそうと、マックワールドUKの記事[*1]で、3G版の「iPhone」を2008年1月に発売?という噂記事が流れています。3G版の「iPhone」が事実だとすると、日本での展開も現実味をおびてくるのかな?なんて思っています。能を紹介してきました。実際に開発で利用すると、ちょっと凝ったアプリケーションで関数やプロシージャを使いたかったり、パフォーマンスアップのためSQLを直接書かなければいけない場面に遭遇します。そこで今回は、Cayenneを使ってこのような問題に対応する方法ついて、紹介したいと思います。Cayenneでは独自のSQLを記述したい場合、以下の方法から選択することができます。GUIモデラーを使った方法です。Query]を選択します。すると以下のSQL定義を選択できます。Querya)を選択すると、MS-ACCESSでクエリを定義するような感覚で、SQLを定義することができます。検索結果として返却するのは、Cayenneで定義(管理)されているテーブルとマッピングされているJavaオブジェクトです。b)を選択すると、SQLを直接記述することができます。検索結果はテーブルとマッピングされているJavaオブジェクトにもできますし、そうでなければJDBCのResultSetから取り出すのと同じ方法になります。してもSQLをチューニングしなければならない場合などに役立ちます。c)を選択すると、ストアドプロシジャを呼び出すことができます。検索結果は、b)と同じように選択することができます。true);のように記述します。performQueryの第一引数がGUIモデラで割り当てた、SQL定義の名前で、第二引数にパラメータをマップで指定します。検索結果がマッピングされているJavaオブジェクトでない場合は、以下のようにします。map.get("ARTIST_NAME");検索結果はマップのリストで戻ります。この方法はJDBCのプログラムに近いので、問題ないでしょう。2)の方法は、Javaのコードを使って、1の方法を実現すると思っておけば良いでしょう。Queries」サンプルが役に立ちます。http://cayenne.apache.org/doc12/customizing-queries.html3)の方法は、これまでとはちょっと趣向が異なります。1と2の方法は、チューニングしたSQLを使いたい場合などに役立ちます。定化されていると思います。先ほどのURLで紹介されているCountQueryクラスを実装して使ってみると、Cayenneの利点がまったく使えないことに気づきます。ある検索条件にヒットする件数を取得したい、といった場合、検索にはCayenneの高い検索機能を使うことができますが、同じ条件(Expression)を使って件数を取得することはできません。検索はExpression、件数はSQLということになり、これなら検索もSQLで良い、ということになるでしょう。そこで標準のSelectQueryを継承して、Expressionが使えるCountQueryクラスを作ってみたいと思います。SelectQueryを継承して作るには、同様のQueryクラスのソースコードを読むのが一番参考になります。今回は紙面の都合上、どういったクラスを作るかだけ紹介し、次回に具体的なコードの記述を紹介したいと思います。・CayenneのSelectQueryを継承した、CustomQueryクラス・CayenneのSelectActionクラスを継承した、CustomSelectActionクラス・CayenneのSelectTranslatorクラスを継承した、CustomSelectTranslatorクラス・CustomQueryクラスを継承した、CountQueryクラス上記の3クラスはCustomという名称であらわすとおり、CountQuery以外にも、SumQueryなどを作りたい場合に有効となります。次回までに時間がありますので、Cayenneのベースクラスである、SelectQuery、SelectAction、SelectTranslatorのコードを読んでおくと役に立ちますのでオススメします。(きしだ)[1]以下のURLを参照ください。http://www.macworld.co.uk/news/index.cfm?RSS&newsID=17320でも噂の元がAppleInisderですので、真偽のほどは・・・・_______________________________________________________________________この記事への評価にご協力をお願いします。URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用のブラウザに表示されれば投票完了です。┗【コラム】Geekのオシゴトこんにちは、オブジェクト倶楽部の炭水化物、やっとむです。炭水化物は命の元!食えば主食で使ってエナジー、貯まると下腹部体脂肪。むイロイロお仕事するけど、燃えてこなしてなんぼのもんです。ごめんなさい!本日はPythonの話じゃありません。岸田さんの連載と「言語の記事が2つかぶるとアレだよね」という恐ーい編集人の命令一下、急遽レポートに変えねばならぬ!書かねばならぬ!なさねばならぬ、なにごとも!なんのレポートかと言いますと、海外のお話です。米国は西海岸であります。偉い人のお供でシリコンバレーに行ってきたのであります。言ってもあくまでお仕事でありますので、その話を書き立ててもつまらんのであります。そこで、現地でお会いした有名人とその著書のお話をいたしますのであります。Salon、そういうイベントに参加させていただきました。直訳すれば「オタクの集い」ですが、日本人で、日本からシリコンバレーに行って仕事をしているエンジニアの集りです。アメリカ語のgeekは「すごい専門技能を持ってる有能な人」的なニュアンスが強いそうですよ(特にシリコンバレーでは。使えないほうのオタクはnerd)。Beyond」[*1]や「ヒューマン2.0」[*2]でも有名な渡辺千賀さん。日本人や日本企業がシリコンバレーでもっと活躍できるような支援をされています[*3]。デブ猫(失礼な!)ムスビちゃん[*4]の飼い主でもあらせられます。印象的だったのは、参加した技術者(geek!)のみなさんが、おしゃべりなこと。加者みんなしゃべりたくってうずうずしている、感じ。日本では「理屈っぽくて議論好きだと煙たがられていた」という人が、シリコンバレーではごく普通の人になってしまうそうな。煙たがられなくてつまんない、という説もあるかもしれないけど、濃ゆい突っ込んだ議論にまわりがみんな付き合ってくれる環境ってちょっとすごくない?「みんな」というのがポイントで、シリコンバレーの労働人口の3分の1がエンジニアだそうです。話で盛り上がってるとか。・まとわりつく人間関係や逃れられぬしがらみが嫌い・自信過剰。