[seasar-dotnet:1186] Re: [DBFlute] 複数データソースに関して

高井朋幸 [E-MAIL ADDRESS DELETED]
2008年 11月 27日 (木) 15:20:46 JST


久保様
小谷様
高井です。

0.8.7のSNAPSHOT ありがとうございます。
さっそく使ってみました。
イメージどおりのソースが生成されて、ちゃんと動いてくれました。

これで複数データソースも楽にいけそうです。


> 小谷様
1.3.13 リリースお疲れ様です。
さっそく利用して思い通りの動作に満足しています。
DBFlute 0.8.7 と Quill 組み合わせて複数データソースのアプリケーション開発
を進めていくことにします。

またなにかありましたらよろしくお願いいたします。


> 久保(jflute)です。
>
> 高井さん、こんにちは
>
> Quillもリリースされたようなので、
> DBFluteでITransactionSettingの実装クラスを生成するように
> してみました。0.8.7のSNAPSHOTにて反映されています。
> http://dbflute.sandbox.seasar.org/download/dbflute/dbflute-0.8.7.zip
>
> また、既に「dbflute-nbasic-example」にて試していますので、
> そちらで生成されたソースを確認することの可能です。
> AllCommon.S2Dao.TxSettingというクラスがそれです。
>
> torque.quillDataSourceNameを設定すると
> DataSourceNameプロパティをオーバーライドするようになっています。
>
> 2008/11/23 koyak <[E-MAIL ADDRESS DELETED]>:
>> 高井さん
>>
>> 小谷です。
>>
>>>最新のソースを落としてきて TransactionSetting を作成したら思い通りに動作
>> してくれました。
>>>トランザクションもちゃんと機能しました。
>>
>> おお!良かったです!!
>> ご確認ありがとうございました。
>>
>>>DBFlute + Quill (1.0.13 のリリースお待ちしております) の最新版で開発を進
>> めていこうと思います。
>>
>> 近いうちにリリースできたらと思います。
>> 決まりましたらMLに流します。
>>
>> 2008/11/23 10:00 kubo <[E-MAIL ADDRESS DELETED]>:
>>> 久保(jflute)です。
>>>
>>>> 0.8.6 リリースおつかれさまです。
>>> ありがとうございます!
>>>
>>>> 基本的なアプリケーションならそれで十分そうなので。
>>>> 必要に応じて利用者が extend したものを作って利用すると思いますし。
>>> そうですね、TypicalTransactionSettingを参考に作成しようかと思います。
>>> (多分小谷さんにレビューしてもらいますw)
>>>
>>> 今後もよろしくお願いします。
>>>
>>> 2008/11/23 高井朋幸 <[E-MAIL ADDRESS DELETED]>:
>>>> 久保様
>>>> 高井です。
>>>>
>>>> 0.8.6 リリースおつかれさまです。
>>>>
>>>>>>> ふと思ったのですが、ITransactionSetting の簡単な実装も DBFlute で自動生
>>>>>>> 成されると、利用する DB ごとに ITransactionSetting の実装クラスを作る手
>>>>>>> 間が省けるのでもっと良いのですが、どうでしょう?
>>>>>>
>>>>>> 似たようなこと考えてました。ありがとうございます。
>>>>>> 複数DB利用時には無いとつらいと思うので。
>>>>>> サブクラスでの実装イメージがまだ湧いてないですが、
>>>>>> そんなに難しくはないと思うので検討してみます。
>>>>
>>>> Seasar .net の quill 説明に載っているサンプルコード程度で
>>>> いいのかなと自分なりに思っていたりします。
>>>> 基本的なアプリケーションならそれで十分そうなので。
>>>> 必要に応じて利用者が extend したものを作って利用すると思いますし。
>>>> と直感的に思ったのですが、もっと良い方法があったりして…。
>>>>
>>>>>> ただ、0.8.6は既にリリースラインに乗せてしまったので、
>>>>>> やるとなればさらに次の0.8.7となりますのでご了承下さい。
>>>>
>>>> 全然問題ないですよ。
>>>> いろいろとありがとうございます。
>>>>
>>>>
>>>>> 久保(jflute)です。
>>>>>
>>>>> 高井さん
>>>>> 先ほどDownloadして試してもらったのが、
>>>>> そのまま正式リリースとなっていますので、
>>>>> そのままご利用下さい。
>>>>>
>>>>> 2008/11/23 kubo <[E-MAIL ADDRESS DELETED]>:
>>>>>> 久保(jflute)です。
>>>>>>
>>>>>>> ふと思ったのですが、ITransactionSetting の簡単な実装も DBFlute で自動生
>>>>>>> 成されると、利用する DB ごとに ITransactionSetting の実装クラスを作る手
>>>>>>> 間が省けるのでもっと良いのですが、どうでしょう?
>>>>>>
>>>>>> 似たようなこと考えてました。ありがとうございます。
>>>>>> 複数DB利用時には無いとつらいと思うので。
>>>>>> サブクラスでの実装イメージがまだ湧いてないですが、
>>>>>> そんなに難しくはないと思うので検討してみます。
>>>>>>
>>>>>> ただ、0.8.6は既にリリースラインに乗せてしまったので、
>>>>>> やるとなればさらに次の0.8.7となりますのでご了承下さい。
>>>>>>
>>>>>> 2008/11/22 takai <[E-MAIL ADDRESS DELETED]>:
>>>>>>> 小谷様
>>>>>>> 久保(jflute)様
>>>>>>> 高井です。
>>>>>>>
>>>>>>> 対応ありがとうございます。
>>>>>>> 最新のソースを落としてきて TransactionSetting を作成したら思い通りに動作
>>>>>>> してくれました。
>>>>>>> トランザクションもちゃんと機能しました。
>>>>>>>
>>>>>>> DBFlute + Quill (1.0.13 のリリースお待ちしております) の最新版で開発を進
>>>>>>> めていこうと思います。
>>>>>>>
>>>>>>> ふと思ったのですが、ITransactionSetting の簡単な実装も DBFlute で自動生
>>>>>>> 成されると、利用する DB ごとに ITransactionSetting の実装クラスを作る手
>>>>>>> 間が省けるのでもっと良いのですが、どうでしょう?
>>>>>>>
>>>>>>>
>>>>>>>> 高井さん
>>>>>>>>
>>>>>>>> 小谷です。
>>>>>>>>
>>>>>>>> 検証ありがとうございます。
>>>>>>>> お知らせいただいた下記のコード&現象についてですが
>>>>>>>> >  bhv1.SelectList(cond1);
>>>>>>>> >  bhv2.SelectList(cond2);
>>>>>>>> >  bhv1.SelectList(cond1);
>>>>>>>> >  bhv2.SelectList(cond2);  // ここまでは正常終了
>>>>>>>> >  logic.SelectList(cond1); // Transaction を使うと SQL エラー
>>>>>>>> >
>>>>>>>> > となりますが、以下のようにすると動きます、
>>>>>>>> >
>>>>>>>> > ...
>>>>>>>> >  bhv1.SelectList(cond1);
>>>>>>>> >  bhv2.SelectList(cond2);
>>>>>>>> >  bhv1.SelectList(cond1);
>>>>>>>> >  bhv2.SelectList(cond2);
>>>>>>>> >  bhv1.SelectList(cond1);
>>>>>>>> >  logic.SelectList(cond1); // 直前の DS が利用されるので動く
>>>>>>>>
>>>>>>>> 確かにトランザクションのデータソースを取得するタイミングの都合上
>>>>>>>> (S2DaoInterceptorよりも前にTransactionInterceptorが呼ばれる)、
>>>>>>>> 直前に使われたデータソースでトランザクションを発行しようと
>>>>>>>> してしまっていますね。
>>>>>>>>
>>>>>>>> 対策として臨時にITransactionSetting(トランザクション設定クラス)に
>>>>>>>> プロパティ「DataSourceName」を追加し、
>>>>>>>> Transactionがかかる前にもDataSourceNameが変更されるように
>>>>>>>> コードを変更しました。
>>>>>>>>
>>>>>>>> Subversionから最新(revision=1055)のソースを取得し、コンパイルしたDLL
>>>>>>>>>>>>>>>> DaoSettingと同じ要領でDataSourceNameを返す
>>>>>>>> TransactionSettingを作成
>>>>>>>>>>>>>>>> logic.SelectListで使っているTransaction属性に
>>>>>>>> 作成したTransactionSettingのTypeを渡す
>>>>>>>>
>>>>>>>> という修正をお手数ですが試していただけないでしょうか。
>>>>>>>> (データソース名はトランザクション側とbhv側で揃えるようにして下さい)
>>>>>>>>
>>>>>>>> もしそれでもエラーが発生するようでしたら
>>>>>>>> 例外クラス(SQLExceptionだと思いますがInnerExceptionがある場合はそれも)
>>>>>>>> 例外メッセージ
>>>>>>>> 例外発生箇所
>>>>>>>> も差し支えない範囲で教えていただけたらと思います。
>>>>>>>>
>>>>>>>> 2008/11/22 18:01 kubo <[E-MAIL ADDRESS DELETED]>:
>>>>>>>> > 久保(jflute)です。
>>>>>>>> >
>>>>>>>> > ご報告ありがとうございます。
>>>>>>>> > このままリリースしますね。
>>>>>>>> >
>>>>>>>> >
>>>>>>>> >> Transaction をかけなければ正常に動作することが確認できました。
>>>>>>>> >> ログの方も必要な時に必要なデータソースが設定されているようです。
>>>>>>>> >
>>>>>>>> > あとは残りはこっちの問題ですかぁ。。。
>>>>>>>> > Quillのトランザクション周りの問題かもしれませんね。
>>>>>>>> >
>>>>>>>> >
>>>>>>>> > 2008/11/22 takai <[E-MAIL ADDRESS DELETED]>:
>>>>>>>> >> 久保(jflute)様
>>>>>>>> >> 高井です。
>>>>>>>> >>
>>>>>>>> >> quillDataSourceName 対応ありがとうございます。
>>>>>>>> >> 早速試してみたところ、DataSourceName プロパティが設定されていてしっかり
>>>>>>>> >> 動いてくれました。
>>>>>>>> >>
>>>>>>>> >>
>>>>>>>> >>> 久保(jflute)です。
>>>>>>>> >>>
>>>>>>>> >>> 高井さん
>>>>>>>> >>>
>>>>>>>> >>> Quillの方が(実は!?)既に固定データソースに対応しているようなので、
>>>>>>>> >>> DBFluteのquillDataSourceName実装しました。
>>>>>>>> >>> (実際に利いてない問題はありますがQuill側の話のようなので)
>>>>>>>> >>>
>>>>>>>> >>> http://dbflute.sandbox.seasar.org/contents/migration/basic.html
>>>>>>>> >>>
>>>>>>>> >>> こちらも
>>>>>>>> >>> 「0.6.5においてまだ未実装」を
>>>>>>>> >>> 「0.6.5においてまだ未実装→0.8.6より実装」に
>>>>>>>> >>> 変更しております。
>>>>>>>> >>>
>>>>>>>> >>> 0.8.6は
>>>>>>>> >>> http://dbflute.sandbox.seasar.org/contents/migration/basic.html
>>>>>>>> >>> からダウンロード可能です。
>>>>>>>> >>> またリリース前のSNAPSHOTではありますが、
>>>>>>>> >>> これで特に問題なければそのままリリース準備に入りたいと思います。
>>>>>>>> >>>
>>>>>>>> >>>
>>>>>>>> >>> 2008/11/22 takai <[E-MAIL ADDRESS DELETED]>:
>>>>>>>> >>> > 小谷様
>>>>>>>> >>> > 高井です。
>>>>>>>> >>> >
>>>>>>>> >>> > 早速の対応とデータソース切り替えの解説ありがとうございます。
>>>>>>>> >>> > 手元に環境がないため PostgreSQL で動く簡単な環境を作ってスナップショット
>>>>>>>> >>> > の動作確認してみました。
>>>>>>>> >>> >
>>>>>>>> >>> > Transaction をかけなければ正常に動作することが確認できました。
>>>>>>>> >>> > ログの方も必要な時に必要なデータソースが設定されているようです。
>>>>>>>> >>> > 1.0.12 では Transaction 属性にかかわらずデータソースが切り替わらなかった
>>>>>>>> >>> > のですが、何かそのあたりも修正されました?(されてないようなら私の設定ミ
>>>>>>>> >>> > スだったのかも)
>>>>>>>> >>> >
>>>>>>>> >>> > ただ、Transaction 属性を利用したメソッドを呼び出すとうまく切り替わってく
>>>>>>>> >>> > れないみたいです。
>>>>>>>> >>> > Transaction 属性を利用したクラスのメソッド内で、そのクラスのフィールドに
>>>>>>>> >>> > Quill で設定された Bhv が呼び出されると前に利用されたデータソースが強制
>>>>>>>> >>> > 的に設定されてしまうようです。
>>>>>>>> >>> > ログにはやはり正しいデータソースが設定されているように出力されます。
>>>>>>>> >>> >
>>>>>>>> >>> > 以下のようなコードで、ロジックの実装クラス内部で DS1 へアクセスする Bhv
>>>>>>>> >>> > を利用していて、ロジック実装クラスに Transaction 属性をかけてあります。
>>>>>>>> >>> >
>>>>>>>> >>> > protected IXxxLogic logic; // これの実装クラスに [Transaction]
>>>>>>>> >>> > protected Ds1Bhv bhv1;
>>>>>>>> >>> > protected Ds2Bhv bhv2;
>>>>>>>> >>> >
>>>>>>>> >>> > ...
>>>>>>>> >>> >  bhv1.SelectList(cond1);
>>>>>>>> >>> >  bhv2.SelectList(cond2);
>>>>>>>> >>> >  bhv1.SelectList(cond1);
>>>>>>>> >>> >  bhv2.SelectList(cond2);  // ここまでは正常終了
>>>>>>>> >>> >  logic.SelectList(cond1); // Transaction を使うと SQL エラー
>>>>>>>> >>> > ...
>>>>>>>> >>> >
>>>>>>>> >>> > となりますが、以下のようにすると動きます、
>>>>>>>> >>> >
>>>>>>>> >>> > ...
>>>>>>>> >>> >  bhv1.SelectList(cond1);
>>>>>>>> >>> >  bhv2.SelectList(cond2);
>>>>>>>> >>> >  bhv1.SelectList(cond1);
>>>>>>>> >>> >  bhv2.SelectList(cond2);
>>>>>>>> >>> >  bhv1.SelectList(cond1);
>>>>>>>> >>> >  logic.SelectList(cond1); // 直前の DS が利用されるので動く
>>>>>>>> >>> > ...
>>>>>>>> >>> >
>>>>>>>> >>> >
>>>>>>>> >>> > Transaction 属性の処理に問題がありそうな気がします。
>>>>>>>> >>> > ちなみに、2相コミットは考えていないので今のところは必要ありません。
>>>>>>>> >>> >
>>>>>>>> >>> > 引き続きよろしくお願いします。
>>>>>>>> >>> >
>>>>>>>> >>> >
>>>>>>>> _______________________________________________
>>>>>>>> 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
>>>>>
>>>>
>>>>
>>>> --
>>>> Takai ICT 株式会社
>>>> 高井朋幸 <[E-MAIL ADDRESS DELETED]>
>>>> TEL: 090-6192-6789
>>>>
>>>> _______________________________________________
>>>> 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
>


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