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

takai [E-MAIL ADDRESS DELETED]
2008年 11月 21日 (金) 18:25:07 JST


久保様
高井です、早い返信ありがとうございます。


S2.net のバージョンを記述するの忘れていました。
最新の 1.3.12 を利用してます。

> > 今インスタンスが別々の複数の DB に接続するアプリケーションで
> 
> というのは、
> 「テーブル構造の違うDBが複数ある」
> という認識でよろしいでしょうか?
> 
> よくあるのですが、「複数DB」と言った時に、
> A. 「テーブル構造の違う(DBの種類も違うかも)別のDB」
> B. 「テーブル構造が同じ負荷分散のための別のDB」
> を混同することが多いので確認です。
> 
> 個人的には「複数DB」というと基本的には「A」を想定するのですが...
> 以下とりあえず「A」を前提にお話します。

A のテーブル構造が違うDBが複数あるという認識で合っています。


> > DBFlute のページに記述されている複数 DB 利用時の手順に従って
> > ソースの自動生成まではできたのですが、プログラムがうまく動作しません。
> 
> こちら、具体的にそのページはどこでしょうか?
> (URLを頂けます?)

http://dbflute.sandbox.seasar.org/contents/setup/multipledb.html 
です。


> DBFluteで「複数DB」するときは、基本的に
> DBFluteクライアントを複数作成します。
> 
> dbflute_abc/...
> dbflute_def/...
> mydbflute/dbflute-0.8.5
> 
> 「ABC」用のDBFluteと「DEF」用のDBFluteと作成し、
> DBFlute本体モジュールは同じものを利用します。
> 生成されるクラスも同じNamespaceではなく、
> それぞれ独立したNamespaceに生成します。
> 
> DBFluteは上記のような構成になっていますでしょうか?

この構造になっています。
生成されたソースは各DB毎に異なる Namespace になっています。
	Proj.DB1.Aaaa ...
	Proj.DB2.Bbbb ...
	Proj.DB3.Cccc ....
のような感じです。


> 詳しくは、
> https://www.seasar.org/svn/sandbox/dbflute/trunk/dbflute-multipledb-example
> のreadme.txtをお読み下さい。
> dbflute-multipledb-exampleは複数DBのExampleです。
> (Java版ですが、考え方・構成はほとんど同じです)
> 
> また、「seasar-dotnet:1135」も複数DBの話題ですので参考になります。

これらも参考にしてみたのですが、うまくいきませんでした。
Quill を利用すると少し違うのかも...?


> > SelectableDataSourceProxyWithDictionary
> 
> もし「A」の場合は、基本的にSelectableDataSourceProxyWithDictionaryの
> 利用は不要のはずです。これは「B」のためのクラスです。

> すいません、こちらちょっと保留させて下さい。
> Javaだと確実にそうなのですが、Quillだと違うかも!?

SelectableDataSourceProxyWithDictionary が App.config に定義されているデー
タソースをすべて保持してました。
これが保持しているデータソースが自動生成された DaoSettings の 
DataSourceName によって自動的に切り替えられることで Bhv が正しい DB に接
続できるのかと思ってました。

データソースを設定した旨のログが出ているにもかかわらずデータソースが切り
替わらないのが謎です。

Bhv が利用するデータソースの切り替えの仕組みがどうなっているかがわかると
いいのですが、google ったり生成されたソースと Quill のソースを読んでみた
ところ見つけられませんでした。
データソースの切り替えの仕組みはどのようになってるか簡単に説明していただ
けるとありがたいです。



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