[Seasar-user:17795] Re: 複数データソース時のEntityManagerの挙動について
duran
[E-MAIL ADDRESS DELETED]
2009年 6月 19日 (金) 17:22:19 JST
小林さま
連絡が遅くなりましたが、
下記の方法でうまくいけました。
ただ、daoMetaDataFactoryが見つからないというエラーが出たため、
下記のように明示的に名前を設定することで回避できました。
<component name="daoMetaDataFactory"
class="org.seasar.dao.impl.DaoMetaDataFactoryImpl"/>
ありがとうございました。
和田
> 小林 (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>
>
>
Seasar-user メーリングリストの案内