[Seasar-user:19628] Re: [Doma]Daoのシングルトン化について

Toshihiro Nakamura [E-MAIL ADDRESS DELETED]
2010年 4月 20日 (火) 18:12:09 JST


中村(taedium)です。

DomaをSeasar2と組み合わせて、以下のドキュメントにあるように
同じ種類のデータソースを動的に切り替えたいということで
いいでしょうか?
それと、DaoのインスタンスはS2コンテナで管理するのですよね?

http://s2container.seasar.org/2.4/ja/jdbc.html#DataSourceDynamicSwiching

この場合、まず、上記のドキュメントにあるようにjdbc.diconを
設定してください。
そして、Domaの設定クラスは、Doma JPetStoreで提供しているものを
そのまま使ってください。
(ただし、Dialectは接続先のRDBMSに合わせて変更してください)
Doma JPetStoreしている設定クラスは次のものです。

https://www.seasar.org/svn/doma/tags/1.5.0/doma-jpetstore/src/main/java/demo/config/AppConfig.java

> Domaを使いたいと思っていますが
> Datasourceの動的切替を行っていると
> 調べたところconfigのコンストラクタで設定を行っているため
> DaoコンポーネントをシングルトンにするとDatasourceの動的切替が出来ません。

データソースの切り替えは、SeasarのSelectableDataSourceProxyで
行われるので、Daoがシングルトンであるかプロトタイプであるかに
関係なく使用できます。
「configのコンストラクタで設定」というのが
どこを指しているのかわかりませんでした。
設定クラスを見せてもらえると早いかもしれないです。

> S2Dao、S2JDBCのソースを見たところ、
> メソッドの実行前にConnectionの取得を行っていて、そこでDatasourceを切り替えているようなので
> S2Dao、S2JDBCではシングルトンに出来そうなのですが・・・。

「メソッドの実行前」のメソッドとはどこのことでしょうか?
SelectableDataSourceProxyのことであれば
DomaのConnectionの使い方はS2DaoやS2JDBCと変わらないと思います。

-- 
Toshihiro Nakamura <[E-MAIL ADDRESS DELETED]>




Seasar-user メーリングリストの案内