[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 メーリングリストの案内