[seasar-s2dao-dev:78] Re: Next S2Dao
Yasuo Higa
higa @ isid.co.jp
2006年 12月 22日 (金) 15:41:24 JST
ひがです。
> 久保です。
>
> なので、自動生成ツール利用の視点から言うと、
> もし、S2DaoがManyToOne(n:1でEntityにMappingする)機能が無くなると、
> 親テーブルのEntityが目の前にいるのに(自動生成されてるのに)、
> わざわざサブクラスにプロパティを作成して、かつ、その継承Entityを
> 戻り値にしたDaoのメソッドも作成するということになります。
>
> S2Dao本体ではなく、S2Dao周りのプロダクトからの視点になってしまうので、
> あまり説得力がない(or ここで発言すべきではない)かもしれません。
> なので「あえて言うと」って感じです。
>
いろいろな視点で仕様を考える必要があると思うので、
遠慮なくおっしゃってください。
ManyToOne(OneToOne)もサポートする。
ただし、自動的に取に行くのではなく、
必要ならアノテーションで明示的に指定する。
例えば、前の例で
class Aaa {
...
private Bbb bbb;
...
}
class Bbb {
...
private Ccc ccc;
...
}
class Ccc {
...
}
のようになっている場合、
List<Aaa> find(...);
ならテーブルAAAのデータのみ。
@Fetch("bbb")
List<Aaa> find(...);
ならプロパティのbbbも同時に取得する。
@Fetch("bbb", fetches=@Fetch("ccc")
List<Aaa> find(...);
ならプロパティのbbb、プロパティbbbのプロパティcccも同時に取得する。
というのでどうでしょう。
この方式なら、予期せぬデータが取得されることはなく、
開発者のイメージ通りにデータが取得されると思うので、
問題はないと思います。
ちなみに、Relno系は廃止しようと思っています。
もともと、SQLファイルを書いた場合でも、N:1マッピングが
可能なようにあのような仕様にしていたのですが、
SQLファイルを書くときは、DTOへのフラットなマッピングで
十分だと思うからです。
Yasuo Higa
The Seasar Project
seasar-s2dao-dev メーリングリストの案内