[seasar-s2dao-dev:76] Re: Next S2Dao

kubo jazzflute @ mbn.nifty.com
2006年 12月 22日 (金) 14:49:20 JST


久保です。

> > 自分は、
> > 
> >   A. DBは関連(1:n)で保存されている。
> >     ↓
> >   B. SQLでは、平坦に取得する。
> >     ↓
> >   C. 画面で関連(1:n)に展開する。※ここでは“DBと同じ持ち方の(1:n)”
> > 
> > というのがちょっとどうなんだろうって悩みます。
> 
> なるほど、必要性が理解できました。
> 1つだけに限っての1発SQL OneToManyは
> あってもよさそうですね。
> かなり限定されている&パフォーマンスの問題を起こしにくい
> のでトラブルメーカになることもなさそうです。

ありがとうございます。


> ManyToOne(OneToOne)は、最終的に利用されるときには、
> ほとんど平坦になるのでいらないということで良いでしょうか。

これに関しては、S2Daoだけのことを考えると「確かにそうです」
と答えざるを得ません。

Entity(Bean)で取得する最大のメリットは OneToMany であって、
ManyToOne ではないです。親テーブルがオブジェクトグラフで
いけない理由が見当たりません。


あえて言うとなると、

S2DaoのEntityを自動生成するツールからの視点だと、
親テーブルの列を取得するときの値の格納先(プロパティ)は、
親Entityへの参照経由で自動生成されています。
それにより、自分でEntityのプロパティを作成する手間を省いています。

> @Join("dept")
> public class EmployeeDto extends Employee {

しかし、この方法に関しては、そのような一括自動生成は
採用できません(しづらい)。なので、プロパティを自分で定義する方向と
なりますが、少し退化してしまう感がすこしあります。

ただ、この方法の方が、プロセスで必要な列だけを取得することができる
などメリットはたくさんあります。プロパティも一括自動生成でなく、
Doltengのように都度自動生成みたいな形で、いくらでもフォローは可能です。

なので、自動生成ツール利用の視点から言うと、
もし、S2DaoがManyToOne(n:1でEntityにMappingする)機能が無くなると、
親テーブルのEntityが目の前にいるのに(自動生成されてるのに)、
わざわざサブクラスにプロパティを作成して、かつ、その継承Entityを
戻り値にしたDaoのメソッドも作成するということになります。

S2Dao本体ではなく、S2Dao周りのプロダクトからの視点になってしまうので、
あまり説得力がない(or ここで発言すべきではない)かもしれません。
なので「あえて言うと」って感じです。




あんまり懸念ばっかり挙げても前向きにならないので、提案です。

Next-S2Daoが、完全に ManyToOneを止めるのではなく、

・デフォルトの「Next S2Dao」は、ManyToOneは無し。
・dao.diconでDaoMetaDataFactoryなどを差し替えるなどして
  Old-S2Dao仕様の動きを実現させることができる。

っていうのはどうでしょうか?

これなら別に自動生成ツールがどうのこうのではなく、
下位互換性を得ることができて、既存のS2Daoを使っている人にも
やさしいかなと思いました。




-- 
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
kubo   <jazzflute @ mbn.nifty.com>
jflute <http://d.hatena.ne.jp/jflute>
株式会社ビルドシステム <http://www.buildsystem.co.jp>
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/



seasar-s2dao-dev メーリングリストの案内