[Seasar-user:17737] Re: 複数データソース時のEntityManagerの挙動について
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2009年 6月 12日 (金) 16:30:40 JST
小林 (koichik) です.
Date: Fri, 12 Jun 2009 16:05:30 +0900
From: duran <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:17736] Re: 複数データソース時のEntityManagerの挙動について
> 現状は以下の方法を用いています。
> http://www.seasar.org/wiki/index.php?FAQ%2FS2DAO#w7da6e0e
>
> AbstractDaoを継承する場合は、
> これとは違うCustomizerの実装が必要という認識で合っていますでしょうか?
違う実装というわけではなく,追加の実装が必要と
いうことです.
FAQ に記載されている内容は,DaoInterceptor を
Dao ごとに切り替えるための設定です.
AbstractDao は DaoInterceptor が適用される
だけでは不十分で,コンストラクタで渡す
DaoMetaDataFactory も Dao ごとに切り替えて
あげる必要があります.
それが追加で必要になるということです.
public class AbstractDaoCustomizer extends AbstractCustomizer {
public String namespace;
protected void doCustomize(ComponentDef cd) {
ArgDef ad = new ArgDefImpl();
ad.setExpression(new OgnlExpression(namespace + ".daoMetaDataFactory"));
cd.addArgDef(ad);
}
}
のようなクラスを作って,FAQ の customizer.dicon に
以下を追加して,
<component name="dao1AbstractDaoCustomizer" class="AbstractDaoCustomizer">
<property name="namespace">"foo"</property>
<initMethod name="addClassPattern">
<arg>"hogehoge.dao.dao1"</arg>
<arg>".*Dao"</arg>
</initMethod>
</component>
<component name="dao2AbstractDaoCustomizer" class="AbstractDaoCustomizer">
<property name="namespace">"bar"</property>
<initMethod name="addClassPattern">
<arg>"hogehoge.dao.dao2"</arg>
<arg>".*Dao"</arg>
</initMethod>
</component>
daoCustomizer を以下のように変更.
<component name="daoCustomizer" class="org.seasar.framework.container.customizer.CustomizerChain">
<initMethod name="addCustomizer">
<arg>dao1SupportAspectCustomizer</arg>
</initMethod>
<initMethod name="addCustomizer">
<arg>dao2SupportAspectCustomizer</arg>
</initMethod>
<!-- 以下を追加 -->
<initMethod name="addCustomizer">
<arg>dao1AbstractDaoCustomizer</arg>
</initMethod>
<initMethod name="addCustomizer">
<arg>dao2AbstractDaoCustomizer</arg>
</initMethod>
</component>
--
<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 メーリングリストの案内