[seasar-dotnet:591] Re: DataReaderでデータの取得

koyak [E-MAIL ADDRESS DELETED]
2007年 9月 10日 (月) 18:15:19 JST


小谷です。
自己レスです。

上記方法だとIDataReaderでは多分返せないということに気づきました(^^;

もっと楽で柔軟なやり方がありそうなので、そちらも書いておきます。

1.Seasar.Dao.Impl.AbstractBeanMetaDataDataReaderHandlerを継承したクラスを作成する。
(仮にNoMappingDataReaderHandlerとします。)
2.Handle(IDataReader dataReader)メソッドをoverrideします。
3.returnでdataReaderをそのまま返すようにします。

4.先のメールの7と同様にDaoMetaDataImplの継承クラスを作成します。
5.CreateDataReaderHandler(MethodInfo mi, IBeanMetaData bmd)メソッドをoverrideします。
6.retTypeがIDataReaderだった場合はNoMappingDataReaderHandlerをnewして返すようにします。

7.先のメールの10〜13と同様の修正を行います。
8.DaoインターフェースにIDataReaderを返すメソッドを作成します。

この方法だと、DataReaderを使う場合と通常のマッピングを使う場合と併用することができます。

-----------------------------------------------------
koyak
[E-MAIL ADDRESS DELETED]
-----------------------------------------------------

07/09/10 に koyak<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 栗田さん
>
> 初めまして。小谷と申します。
>
> 単純に方法についてだけを考えると以下のような手順で
> いけるのではないかと思います。
> (実際に動かして試してみたわけではありません。ご了承下さい。)
>
> 1.Seasar.Extension.ADO.Impl.BasicSelectHandlerを継承したクラスを作成する。
> (仮にCustomSelectHandlerとします)
> 2.CustomSelectHandlerにExecute(IDbCommand cmd)メソッドのoverrideを作成する。
> 3._dataReaderHandler.HandleにdataReaderを渡さずそのままdataReaderを返すようにする。
>
> 4..Seasar.Dao.Impl.SelectDynamicCommandを継承したクラスを作成する。
> (仮にCustomSelectDynamicCommandとします)
> 5..Execute(object[] args)メソッドのoverrideを作成する。
> 6..BasicSelectHandlerではなくCustomSelectHandlerをnewするようにする。
>
> 7.Seasar.Dao.Impl.DaoMetaDataImplを継承したクラスを作成する。
> (仮にCustomDaoMetaDataとします)
> 8.CreateSelectDynamicCommand(IDataReaderHandler drh)メソッドのoverrideを作成する。
> 9.SelectDynamicCommandではなくCustomSelectDynamicCommandをnewして返すようにする。
>
> 10.Seasar.Dao.Impl.DaoMetaDataFactoryImplを継承したクラスを作成する。
> (仮にCustomDaoMetaDataFactoryとします)
> 11.CreateDaoMetaData(Type daoType)メソッドのoverrideを作成する。
> 12.DaoMetaDataImplではなく、CustomDaoMetaDataをnewするようにする。
>
> 13.S2Daoのコンポーネントを定義しているdiconを編集し、
> DaoMetaDataFactoryImplではなくCustomDaoMetaDataFactoryを使うようにする。
>
> 1〜13はDBFluteを使用しない場合の方法です。
> DBFluteを使用する場合は1〜3はそのまま。
> 4〜12の修正をxxx.allcommon.s2dao下にある
> ・S2DaoSelectDynamicCommand(SelectDynamicCommandの拡張)
> ・S2DaoMetaDataExtension(DaoMetaDataImplの拡張)
> ・S2DaoMetaDataFactoryImpl(DaoMetaDataFactoryの拡張)
>
> に対して行い、dbflute.diconを編集。
> S2DaoMetaDataFactoryImplの代わりにCustomMetaDataFactoryを使うように
> すればいけるかと思います。
> (ただし、dbflute.diconはDBFluteで自動生成を行う度に上書きされます。
> ご注意下さい。)
>
> -----------------------------------------------------------
> koyak
> [E-MAIL ADDRESS DELETED]
> -----------------------------------------------------------
>
> 07/09/10 に marron Hnoss<[E-MAIL ADDRESS DELETED]> さんは書きました:
> > 初めてメールを送らせていただきます、栗田といいます。
> > よろしくお願いします。
> >
> > 現在、.NETでS2Container、S2Dao、DBFluteを使用して開発を考えています。
> > この方法で開発を進めるには、PCに対しての高負荷時の処理を考えて、DataReaderで取得できる
> > ことも可能であることがMust要件と言われています。
> >
> > DataSourceから自分でDataReaderで取得する方法があると思いますが、
> > DBFluteとS2Daoの機能がとても便利であるため、SQL文解決などを使用したく、
> > また極力DataReaderを取得するまでの実装をORマッピングした場合と
> > 変更したくないと考えています。
> > 新規の開発者でも容易に実装&可読性もあがるメリットもあると思っているので
> > なんとか利用できないかと思っております。
> >
> > 何か良い方法がないかアドバイスを頂ければありがたいです。
> > よろしくお願いします。
> > _______________________________________________
> > seasar-dotnet mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> >
> >
>


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