[Seasar-user:3602] Re: [S2Dao]N:1マッピングについて
筒井 勉
[E-MAIL ADDRESS DELETED]
2006年 5月 11日 (木) 14:14:27 JST
筒井です。
上原さん、早速のアドバイス有難うございます。
> もし自分がやるとしたら、
> T1用のdaoとT3用のdaoを用意して、
> a. の場合は普通にT1用のdaoのN:1の機能を利用し
> b.の場合はT1用のdaoからT1、T2を取得したのちにT3用のdaoからT3を取得して
> T2にT3をセットする関数をじぶんで書くでしょうか。
そうですね、最初はそうしようかと考えたんですが、以下の理由より、別の方法
は無いものかと考えていました。
・T1,T2,T3の情報が複数件必要な場合があり、上述の方法だとT3取得sqlが複数
回発行され、パフォーマンスが低下する。
・テーブルのスキーマに変更があった場合、Beanの修正は最小限に抑えたい。
(T1,T2のBeanとT1,T2,T3のBeanをそれぞれ用意するのは避けたい)
結果、下記の方法を採ることにしました。
(1)aの場合
1)Bean
public class T1ABean {
public static final String TABLE = "T1";
public static final int t2Bean_RELNO = 0;
public static final String t2Bean_RELKEYS = "T2ID";
private String id;
private String col;
private String t2id;
private T2Bean t2Bean;
略
}
2)Dao
S2Daoによるsql自動生成
(2)bの場合
1)Bean
public class T1BBean extends T1ABean {
public static final int t3Bean_RELNO = 1;
private T3Bean t3Bean;
略
}
2)Dao
sqlファイルを用意する。
<sql>
select
T1.id,
T1.col,
t2Bean.t2id as t2id_0,
t2Bean.t2col as t2col_0,
t2Bean.t3id as t3id_0,
t2Bean.t3id as t3id_1,
t2Bean.t3col as t3col_1
from
T1,
T2 t2Bean,
T3 t3Bean
where
T1.id = /*id*/'001' and
T1.t2id = t2Bean.t2id and
t2Bean.t3id = t3Bean.t3id
以上
--
筒井 勉 <[E-MAIL ADDRESS DELETED]>
Seasar-user メーリングリストの案内