[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 メーリングリストの案内