トップ «前の日記(2009-02-21) 最新 次の日記(2009-02-23)» 編集

Ussy Diary


2009-02-22

[Java][ORM]S2JDBC

テーブル構造が仕組み上あまり ORM と相性のよろしくないデータベースにアクセスしようと考える。単純にオブジェクトとデータベースをマッピングできない。サンプルも副問い合わせが絡む少し複雑な SQL。 Java のコードに SQL を書き込むことは何としても避けたいので、ファイルに書き出すことができオブジェクトにバインドを行うフレームワークを探す。

  • iBatis
  • S2Dao
  • S2JDBC

有名どころだとこれぐらい?ほかにもあるのかも。 iBatis は XML ファイルに SQL を書いて戻り値となる Entity のクラス定義も書いた記憶がある。久しぶりにサイトに覗きにいったところいい意味で変わってないなあと思った。

S2Dao と S2JDBC を比較すると今は S2JDBC を推奨している。当時はインターフェースを書くだけでテーブル操作ができた S2Dao に驚いたなあ。

S2JDBC を実際に触ってみるとタイプセーフで行けるのは簡単なものならまだいいものの、複雑なものでは何をやっているのかよく分からない。 出力している SQL を見れば問題ないことは分かるけど不安な気持ちが残るかな。このあたりは使い分ければいいと思うけど問題はどこから SQL にするのかってあたりなんだろうか。今回は先に書いたとおりテーブルの関連性が綺麗にオブジェクトに結びつけられないレガシー設計ということで SQL ですべて書いていくこととするためこの問題はクリア。

S2Dao のようにインターフェースだけですむわけではないけどに Container に組み込まれている、設定情報が最低限であること、 interceptor を使わず動きがわかりやすいことから S2JDBC を使おうと思います。

ところで Spring JDBC は SQL のファイル読み込みは組み込まれていないのでしょうか。難しい処理でないから独自に組み込めってことなのか、あれば便利だと思うんだけどなあ。

それから久しぶりに生 JDBC 書いたところあまりの面倒さに、これはないわーとなりました。