2008年1月10日木曜日

クエリ結果のクラスへのマッピング

T字形ER図で基本のテーブルを設計しちゃったシステムがあって、いつも使ってるHibernateを適用しづらくなってしまった。

てことで、クラスとテーブルをマッピングするソリューションについて、代替案をいろいろ探してみたんだが、DbUtilsかSpringのJdbcDaoSupportか、といったところで詰まった。

必須機能ではないんだけど、2つ以上のテーブルをjoinした結果を、各々のテーブルオブジェクトの二次元配列として返してくれるのがない。
クラスへのマッピングを諦めてMapで扱うのもいいんだけど、Stringで扱うとリファクタリングきかないし、個人的にはやめておきたいところ。
join結果を1クラスにする方法もあるけど、これだとjoinのパターンごとにわざわざクラスを作成しなきゃいけないのでこれも面倒。

じゃーってことで、自前でマッパを作ろうと思って意気込んでみたものの、OracleのjdbcドライバじゃResultSetMetaData#getTableName(int)でテーブル名が引っ張ってこれないという事実(゚д゚lll)

うーん困ったぞ。
Hibernateのnative queryみたいに、

select {a.*}, {b.*} from table_a a, table_b b where a.fk = b.id

のようなaliasは、SQL単品ではできないものか。
SQL嫌いだからあんまり勉強してなくてわかんないやヽ(´ー`)ノ

ふぅ

0 件のコメント: