[seasar-s2dao-dev:69] Next S2Dao

Yasuo Higa higa @ isid.co.jp
2006年 12月 21日 (木) 18:35:41 JST


ひがです。

S2Daoの1.1ですが、既存のユーザからみると
バージョンアップするメリットが見えづらいので
存在としてはちょっと弱いかなと思います。

また、S2Daoは、もともとSQLを中心にした
シンプルなフレームワークなので、OneToManyなどの
リッチな関連のサポートも、本来の方向性とは少し異なる気がします。

SQLとJavaBeansとのマッピングに徹して、リッチな関連が
欲しければHibernateなどを使ってもらうようにしたほうが
棲み分けとしては分かりやすい気がします。

というわけで、Next S2Daoは、N:1の関連も止めて
シンプルなSQLとJavaBeansのマッピングに徹する方向に
向かったほうがよいのではないかという提案です。

また、Next S2Daoは、Java5の機能をフルに生かしたもの
(Genericsなど)にすることで既存のユーザにとっての
利便性も上がるのではないかと思います。

私が考えているNext S2Daoの機能は次のとおりです。

・Genericsをつかうことで、任意のBeanをメソッドで
  使えるようにする。
  メソッドごとにBeanアノテーションを指定できるような感じ。
・メソッドのオーバーロードをサポートする。
  同じ名前で複数のメソッドを定義できるようにする。
・JavaBeans(DTO)にJoinアノテーションを指定できるようにする。
@Join("dept")
public class EmployeeDto extends Employee {
  private String deptName;
  private String loc;
  ...
}

DTOを使うメソッドは、Joinアノテーションを利用して
自動的にSQL文を組み立てます。
また、またDTOと同じパッケージに
DTOのクラス名.sqlというSELECT文を記述したSQLファイルを
置くことによって、DTOにSQLをマッピングすることもできるようにします。

WHERE句の条件は、メソッドの引数により組み立てます。
KuinaDaoと同じ仕様(ConditionBeanとか)。

List<EmployeeDto> find(EmployeeCondition bean);

Pagingは、Hibernateのように、DBMSの機能をできる限り
使い切る。

後、この機能をS2Tigerに組み込みたいと思います。
Doltengが配布してくれるとはいえ、Seasar2とS2Daoは
タイトに結びついているため、一緒のほうがなにかと
便利なためです。

また、S2DaoをSeasar2に取り込むにあたり、今のEJB3とJPAの
サポートをS2Tigerから切り離し、S2EEにする予定です。

そしてこのSeasarのバージョンを2.5にする予定。

ご意見お聞かせください。

よろしくお願いします。

Yasuo Higa
The Seasar Project


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