[seasar-s2dao-dev:50] Re: Dao/BeanMetaDataImpl等の拡張リファクタ

Hirotaka HONMA manhole @ arksystems.co.jp
2006年 11月 25日 (土) 00:49:54 JST


ほんまです。

On 11/25/06, kubo <jazzflute @ mbn.nifty.com> wrote:

> S2Daoのコミッタながら、コアユーザでもある立場からの提案です。
> Dao/BeanMetaDataImplの拡張をしやすくするためのリファクタリングを
> したいでのすが、よろしいでしょうか?

おおーやりましょう。

> 例えば、BeanMetaDataImpl.createRelationPropertyType()に関して、
> 中でBeanMetaDataImplをnewしていますが、これをFactoryMethodに
> 置き換えるなど。

おお、手元で正に試行錯誤していましたw

> createRelationPropertyType()をオーバーライドして、
> そのままコピーしてちょっとだけ修正ということをやっているのですが、
> 「更新したプロパティのみをUPDATE文に含める」に関する修正で
> このメソッドは修正されますので。。。
> できれば今後のためにも「無理やりオーバーライド」を
> させたくない(したくない)と思いました。

「無理やりオーバーライド」ってどの部分ですか?
(ちょっとわからなかったので)

> 1. DaoMetaDataImpl.initialize()内の「new BeanMetaDataImpl()」を
>    FactoryMethodにする。
>
> 2. DaoMetaDataImpl.initialize()内の「new ResultSetHandlerFactoryImpl()」を
>    FactoryMethodにする。
>
> 3. BeanMetaDataImpl.createRelationPropertyType()内の
>    「new BeanMetaDataImpl()」をFactoryMethodにする。
>
> 4. BeanMetaDataImpl.createRelationPropertyType()内の
>    「beanMetaData.setXxx()」を呼び出している部分を
>    protectedの別Methodにする。
>
> 5. ResultSetHandlerFactoryImplをpublic(or protecgted?)クラスに
>    する。(現状PackageScopeのため全く触れない)
>
> 6. ResultSetHandlerFactoryImpl.createResultSetHandler()の
>    各ResultSetHandlerの生成をFactoryMethodにする。

- BeanMetaData,DaoMetaDataはinitializeで頑張りすぎ
- BeanMetaDataのファクトリは欲しいな
- DaoMetaDataFactory側にDaoMetaDataの初期化処理を持たせても良いかな

と思っています。

そのへんを変えると、S2Daoの拡張フレームワークには影響が出ると思いますが、
S2Daoを外から使っている方には影響ゼロにしたいなぁと。


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