[seasar-dotnet:1167] Re: DBFlute BatchUpdateについて

kubo [E-MAIL ADDRESS DELETED]
2008年 11月 22日 (土) 00:19:10 JST


久保(jflute)です。

とりあえず、C#ではサポートしない予定だった「バッチ更新」を
正式にJIRA課題としてUPしました。

https://www.seasar.org/issues/browse/DBFLUTE-385

情報提供頂いた内容は随時ここにメモしていこうかと思います。
実際に「実現ができること」が確認できてもすぐに実装というのは
無理な状況でありまして、申し訳ありませんが時間がかかる可能性が
あるはご了承下さい。

2008/11/21 kubo <[E-MAIL ADDRESS DELETED]>:
> 久保(jflute)です。
>
> 菊池さん、情報提供ありがとうございます。
>
>> DbProviderFactory.CreateDataAdapter ではだめですか?
>> DbProviderFactoryをどっから取ってくるかという問題にすり変わるだけかもしれませんけど。
>>
>> 標準的な .NET の設定系での ConnectionStringStttings を使っているのであれば ProviderName
>> でDB接続プロバイダ名が解るのでDbProviderFactories.GetFactoryでDbProviderFactoryが
>> 取得できます。
>
> なるほど、まさしく欲しい情報でした。
> ありがとうございます。
> Quillで隠蔽されてて実際どうかわかりませんが、
> 似たような発想で実現は出来そうな気がしますね。
>
>> ちゃんとやればDB非依存なADO.NETコードは書けるのですが、SqlClient固有の設定とかが
>> if( conn is SqlClient )  な条件分岐になりやすくて結局DB依存してしまいやすい罠だったりしますけど。
>
> 実は、こちらの方が心配してたりします。
> 実際ストアドプロシージャの実行がかなりDBによるIF文分岐だったので、
> 今回の件も対応できたとしても全部のDBでしっかり動かせるように
> なるまでかなり大変なんじゃないかと。
>
> 2008/11/21 菊池和彦 <[E-MAIL ADDRESS DELETED]>:
>> 菊池です
>>
>> # DBFluteは殆ど触ってないので接続をどっから取ってくるとかちっとも把握してなくて
>> #とんちんかんな事言ってるかもしれません。
>>
>> DbProviderFactory.CreateDataAdapter ではだめですか?
>> DbProviderFactoryをどっから取ってくるかという問題にすり変わるだけかもしれませんけど。
>>
>> 標準的な .NET の設定系での ConnectionStringStttings を使っているのであれば ProviderName
>> でDB接続プロバイダ名が解るのでDbProviderFactories.GetFactoryでDbProviderFactoryが
>> 取得できます。
>>
>>
>>
>> DbProviderFactories.GetFactory メソッド (String)
>> http://msdn.microsoft.com/ja-jp/library/h508h681(VS.80).aspx
>>
>> ConnectionStringSettings.ProviderName プロパティ
>> http://msdn.microsoft.com/ja-jp/library/system.configuration.connectionstringsettings.providername(VS.80).aspx
>>
>> ちゃんとやればDB非依存なADO.NETコードは書けるのですが、SqlClient固有の設定とかが
>> if( conn is SqlClient )  な条件分岐になりやすくて結局DB依存してしまいやすい罠だったりしますけど。
>>
>>
>> 2008/11/21 18:12 kubo <[E-MAIL ADDRESS DELETED]>:
>>> 久保(jflute)です。
>>>
>>>> あと課題は、DataTableがI/Fになっているということなので、
>>>> 内部的にList<Entity>の内容をDataTableの形に直してあげる必要が
>>>> ありそうですね。
>>>> (DataTableを使ったことがないのでそれが可能なのか
>>>> どうかよくわかってません。。。)
>>>
>>> もう一つ課題と思われるのが、
>>> DbDataAdaptor自身はAbstractクラスで、
>>> それぞれのDB依存のサブクラスのインスタンスを生成しなければ
>>> なりませんが、DBFlute上でDB依存せずにDB依存のサブクラスの
>>> インスタンスを生成する方法がちょっと今わかっていません。
>>>
>>> 2008/11/21 kubo <[E-MAIL ADDRESS DELETED]>:
>>>> 久保(jflute)です。
>>>>
>>>>> http://msdn.microsoft.com/ja-jp/library/kbbwt18a(VS.80).aspx
>>>>> こちらにあるとおり、DbDataAdapterのUpdateBatchSizeを指定することで
>>>>> バッチ更新ができるようです。
>>>> おお、了解です。
>>>>
>>>>> 記述が正確でなく申し訳ございませんでした。
>>>>> 自分で一度試してみようと思います。
>>>> よろしくお願いします。
>>>> 情報提供本当に助かります。
>>>>
>>>> あと課題は、DataTableがI/Fになっているということなので、
>>>> 内部的にList<Entity>の内容をDataTableの形に直してあげる必要が
>>>> ありそうですね。
>>>> (DataTableを使ったことがないのでそれが可能なのか
>>>> どうかよくわかってません。。。)
>>>>
>>>> 2008/11/21 井上忠彦 <[E-MAIL ADDRESS DELETED]>:
>>>>> 久保様
>>>>>
>>>>> 早速のご返答ありがとうございます。
>>>>>
>>>>> http://msdn.microsoft.com/ja-jp/library/kbbwt18a(VS.80).aspx
>>>>> こちらにあるとおり、DbDataAdapterのUpdateBatchSizeを指定することで
>>>>> バッチ更新ができるようです。
>>>>>
>>>>> 記述が正確でなく申し訳ございませんでした。
>>>>> 自分で一度試してみようと思います。
>>>>>
>>>>> 以上、宜しくお願い致します。
>>>>>
>>>>> kubo さんは書きました:
>>>>>> 久保(jflute)です。
>>>>>>
>>>>>> こんにちは、井上さん
>>>>>> 取り急ぎの返答です。
>>>>>>
>>>>>>> 話を蒸し返してもうしわけございません。
>>>>>>> DataAdapterのUpdate()で、バッチ更新ができるようですが、
>>>>>>> この機能では不十分なのでしょうか?
>>>>>>
>>>>>> http://msdn.microsoft.com/ja-jp/library/system.data.common.dataadapter.update(VS.80).aspx
>>>>>> その機能はこちらのことでよろしいでしょうか?
>>>>>>
>>>>>> もし、そうであれば、
>>>>>>> これらのステートメントはバッチ処理として実行されるのでは
>>>>>>> ない点に注意してください。各行は個別に更新されます。
>>>>>> という記述がちょっと気に掛かります。
>>>>>> (単に中でループしているだけではあまり意味がないのですが)
>>>>>>
>>>>>> 2008/11/21 井上忠彦 <[E-MAIL ADDRESS DELETED]>:
>>>>>>> お世話になっております。
>>>>>>> 井上です。
>>>>>>>
>>>>>>> 話を蒸し返してもうしわけございません。
>>>>>>> DataAdapterのUpdate()で、バッチ更新ができるようですが、
>>>>>>> この機能では不十分なのでしょうか?
>>>>>>>
>>>>>>> 以上、宜しくお願い致します。
>>>>>>>
>>>>>>> 井上忠彦 さんは書きました:
>>>>>>>> 久保様 杉本様
>>>>>>>>
>>>>>>>> 了解しました。
>>>>>>>> ご回答ありがとうございました。
>>>>>>>>
>>>>>>>> kubo さんは書きました:
>>>>>>>>> 久保(jflute)です。
>>>>>>>>>
>>>>>>>>>> ADO.NETでバッチ更新(JDBCでいうaddBatchやexecuteBatchでしたっけ?)が
>>>>>>>>>> なかったためSeasar.NETではサポートしていません。(.NET 2.0時点で確認)
>>>>>>>>> 杉本さん、なるほど了解です。
>>>>>>>>> ありがとうございます。
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> JDBCでいうaddBatchやexecuteBatchでしたっけ?
>>>>>>>>> 合ってます。
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> 2008/11/10 Kazuya Sugimoto <[E-MAIL ADDRESS DELETED]>:
>>>>>>>>>> 杉本です。
>>>>>>>>>>
>>>>>>>>>> ADO.NETでバッチ更新(JDBCでいうaddBatchやexecuteBatchでしたっけ?)が
>>>>>>>>>> なかったためSeasar.NETではサポートしていません。(.NET 2.0時点で確認)
>>>>>>>>>>
>>>>>>>>>> 2008/11/10 14:40 kubo <[E-MAIL ADDRESS DELETED]>:
>>>>>>>>>>> 久保(jflute)です。
>>>>>>>>>>>
>>>>>>>>>>> 井上さん、こんにちは
>>>>>>>>>>>
>>>>>>>>>>>> 現在進めているプロジェクトにて
>>>>>>>>>>>> Seasarを使用することが決定し、
>>>>>>>>>>> ご利用ありがとうございます!
>>>>>>>>>>>
>>>>>>>>>>>> Java版ではbatchUpdateがあるようですが、
>>>>>>>>>>>> C#版では実装の予定はありますでしょうか?
>>>>>>>>>>> 実は、ADO.NETでそもそもバッチ更新を
>>>>>>>>>>> サポートしているのかどうかが不明で着手しておりません。
>>>>>>>>>>> (もしご存知でしたら教えて頂けるとありがたいです)
>>>>>>>>>>>
>>>>>>>>>>> また、S2Dao.NET自体もバッチ更新はサポートしておりません。
>>>>>>>>>>> (その理由は。。。なんでしょう?他のコミッタの方?)
>>>>>>>>>>>
>>>>>>>>>>> 2008/11/10 井上忠彦 <[E-MAIL ADDRESS DELETED]>:
>>>>>>>>>>>> お世話になっております。
>>>>>>>>>>>> 井上と申します。
>>>>>>>>>>>>
>>>>>>>>>>>> 現在進めているプロジェクトにて
>>>>>>>>>>>> Seasarを使用することが決定し、
>>>>>>>>>>>> 調査をすすめております。
>>>>>>>>>>>>
>>>>>>>>>>>> Java版ではbatchUpdateがあるようですが、
>>>>>>>>>>>> C#版では実装の予定はありますでしょうか?
>>>>>>>>>>>>
>>>>>>>>>>>> 以上、宜しくお願い致します。
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> 井上
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> seasar-dotnet mailing list
>>>>>>>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>>>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> seasar-dotnet mailing list
>>>>>>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>>>>>>>> --
>>>>>>>>>> Kazuya Sugimoto
>>>>>>>>>> Microsoft MVP Development Platforms - XML
>>>>>>>>>> http://d.hatena.ne.jp/sugimotokazuya/
>>>>>>>>>> _______________________________________________
>>>>>>>>>> seasar-dotnet mailing list
>>>>>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> seasar-dotnet mailing list
>>>>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> 株式会社ネスティ
>>>>>>> 井上忠彦
>>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> seasar-dotnet mailing list
>>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>>>>>
>>>>>> _______________________________________________
>>>>>> seasar-dotnet mailing list
>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>>>>
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> seasar-dotnet mailing list
>>>>> [E-MAIL ADDRESS DELETED]
>>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>>>
>>>>
>>> _______________________________________________
>>> seasar-dotnet mailing list
>>> [E-MAIL ADDRESS DELETED]
>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>
>>
>>
>>
>> --
>>  Kazuhiko Kikuchi <[E-MAIL ADDRESS DELETED]>
>>  Microsoft Valueable Professional - Visual C# 2004-2007
>> _______________________________________________
>> seasar-dotnet mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>
>


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