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

marron Hnoss [E-MAIL ADDRESS DELETED]
2007年 9月 12日 (水) 18:27:28 JST


栗田です。

久保さん、DBFluteでの対応ありがとうございます。
DataReaderのCloseを実装者側で意識しなくても良いので
とても素敵ですね。
内部的な処理はわかりませんが、S2ADOのHandlerの拡張の
ような感じでCursorHandlerが利用できるような感じでしょうか?

後、別スレになってしまったのですが、S2Dao側ですが、
小谷さんの方法の場合に、
>* DBFluteの作成したクラスを修正した場合dbflute.diconは修正の必要はないけれど
*>* S2DaoMetaDataExtension.csの修正が必要になるかと思います。
*
> こちらについてはS2DaoMetaDataExtensionを継承したクラスを作成して、
> そのクラスに先のメールで挙げたような修正を行う、という想定でいました。
> 手を入れるのはS2DaoMetaDataExtensionを継承した別クラスということに
> なりますので自動生成でS2DaoMetaDataExtensionが上書きされても
> 問題ありません。
> その代わりdbflute.diconが上書きされてしまうのでどっちもどっちではあります

とありましたがS2DaoMetaDataExtensionを拡張したクラスを呼び出すように置き換えるのがS2DaoMetaDataFactoryImplで、ここを置き換えるためにはこの
クラスを継承した場合virtual宣言が必要なります。もし
2DaoMetaDataFactoryImplを直接修正する場合は、自動生成毎に
修正を入れることになると考えています。
(これも勘違いしていたらごめんなさい;>小谷さん)



07/09/12 に kubo <[E-MAIL ADDRESS DELETED]> さんは書きました:
>
> 久保です。
>
> > 現在、.NETでS2Container、S2Dao、DBFluteを使用して開発を考えています。
> > この方法で開発を進めるには、PCに対しての高負荷時の処理を考えて、DataReaderで取得できる
> > ことも可能であることがMust要件と言われています。
> >
> > DataSourceから自分でDataReaderで取得する方法があると思いますが、
> > DBFluteとS2Daoの機能がとても便利であるため、SQL文解決などを使用したく、
> > また極力DataReaderを取得するまでの実装をORマッピングした場合と
> > 変更したくないと考えています。
> > 新規の開発者でも容易に実装&可読性もあがるメリットもあると思っているので
> > なんとか利用できないかと思っております。
>
> S2Daoで対応することも検討していますが、もう暫く時間が掛かりそうです。
>
>
> S2Daoのやり方とは別の方法ではありますが、
> DBFluteにて独自の対応しました。
>
>
> AllCommon.Ado.CursolHandlerというInterfaceを追加しました。
>
> 1. CursolHandlerを実装したクラスを作成
>
> public class MyCursolHandler : CursolHandler {
>
>    public object Handle(IDataReader dr) {
>        // ...CSVに吐き出すなりなんなり好きなように実装
>        // DataReaderのClose()は内部的に行われるので気にしなくてよい。
>        return ...; // 戻り値を利用しないならnull固定でOK
>    }
> }
>
>
> 2. CursolHandlerを引数にとるDaoメソッドを作成
>
> void selectListXxx(XxxPmb pmb, CursolHandler handler);
>
>
> 3. 呼び出し
>
> MyCursolHandler handler = new MyCursolHandler();
> XxxPmb pmb = new XxxPmb();
> ...
> void selectListXxx(XxxPmb pmb, CursolHandler handler);
>
>
> 次バージョンにて反映されます。
>
>
>
> また、Sql2Entityを利用して以下のようなことを考えています。
>
> ==========================================================
> 「Sql2Entityで外だしSQLからタイプセーフなDataReaderを生成」
>
> public class MyBookCursolHandler : BookCursolHandler {
>
>    public object Handle(BookDataReader dr) {
>        // SQLのSelect句の名前でタイプセーフに実装可能
>        int bookId = dr.BookId;
>        string bookName = dr.BookName;
>
>        return ...;
>    }
> }
> ==========================================================
>
> すると、DataReaderを扱いながら、列の値の取得などはタイプセーフに
> アクセスが可能になります。
>
>
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: http://ml.seasar.org/archives/seasar-dotnet/attachments/20070912/3b2c57f2/attachment.html 


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