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

kubo [E-MAIL ADDRESS DELETED]
2008年 11月 27日 (木) 15:29:25 JST


久保(jflute)です。

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

おおお、ご報告ありがとうございます。

> DBFlute 0.8.7 と Quill 組み合わせて複数データソースのアプリケーション開発
> を進めていくことにします。

これからもよろしくお願いします。


2008/11/27 高井朋幸 <[E-MAIL ADDRESS DELETED]>:
> 久保様
> 小谷様
> 高井です。
>
> 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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>


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