[Seasar-user:19397] Re: dataSourceNameはnullあるいは空であってはいけません
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2010年 2月 27日 (土) 00:00:00 JST
小林 (koichik) です.
Date: Fri, 26 Feb 2010 21:15:41 +0900
From: 吉村 実 <[E-MAIL ADDRESS DELETED]>
To: <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:19396] Re: dataSourceNameはnullあるいは空であってはいけません
> http://s2container.seasar.org/2.4/ja/jdbc.html
> の「同じ種類のデータソースを動的に切り替える」になりますでしょうか。
既存の設定では一つの Dao クラスのインスタンスを
複数登録して異なるデータソースを使い分けている
ようなので,「同じ種類」であるように見えます.
> 以前のバージョンにおいては、
> 「プログラムでは、org.seasar.extension.datasource.DataSourceFactoryを使って
> データソース名を設定します。」
> のようなことはやっていないようで、
SelectableDataSource を使う代わりに異なる
Dao のインスタンスを使い分けているからですね.
それよりは SelectableDataSource を使う方が
いいのではないかと思います.
その場合,Dao の設定は一組だけでよくなります.
hogeX.dicon と hogeA.dicon を統合して hoge.dicon
だけにしてください.
Service を安直に修正するなら以下のように
なります.
> 「TttListCommonServiceImpl」
>
public DataSourceFactory dataSourceFactory;
> public List<tttData> searchByCondition4List( AaaForm aaaForm) {
if ( referDB.isHogeADB() == true ) {
dataSourceFactory.setSelectableDataSourceName("xxx");
else {
dataSourceFactory.setSelectableDataSourceName("yyy");
}
>
> // 検索実行
> return aaaForm.getDataDao().findBySearchList( );
> }
参照する DB がリクエスト単位などで決定できるなら
ドキュメントにあるようにインターセプタを使う方が
よりよいと思います.
> 下記※2のようなやり方をしているようなのですが、
> バージョンアップに伴い、このやり方ではダメになったりすることは
> ありますでしょうか。
いいえ.普通に動くと思います.
--
<component name="koichik">
<property name="fullName">"Koichi Kobayashi"</property>
<property name="email">"[E-MAIL ADDRESS DELETED]"</property>
<property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>
Seasar-user メーリングリストの案内