Spring/hibernateの同じJavaクラスから2つのデータベースに同時にアクセスしようとしています。それらは構造の点で同一です。そして、それらは両方とも同じmySqlインスタンスに存在します。それらを「myDatabaseA」および「myDatabaseB」と呼びます。
私の計画は、DAOクラスとEntityクラスを異なるパッケージ(たとえば、「com.entities.packageA」と「com.entities.packageB」)に複製することです。エンティティでは、テーブルアノテーションの「catalog」キーワードを使用してデータベースの曖昧性を解消します。
@Entity
@Table(catalog="myDatabaseB", name = "myTable1")
最後に、Session Factory Beanで、次のように「basePackages」プロパティで両方のデータベースのエンティティを指定しようとします。
<!-- Session factory bean -->
<b:bean id="sessionFactory" class="com.mycompany.spring.ExtendedAnnotationSessionFactoryBean"">
<b:property name="dataSource" ref="dataSource" />
<b:property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" />
<b:property name="hibernateProperties" ref="hibernateProperties" />
<b:property name="entityInterceptor" ref="baseEntityInterceptor" />
<b:property name="basePackages">
<b:list>
<b:value>com.entities.myPackageA</b:value>
<b:value>com.entities.myPackageB</b:value>
</b:list>
</b:property>
</b:bean>
コードでは、myDatabaseAにアクセスするときに、「myPackageA」のエンティティとdaosを使用し、myDatabaseBにアクセスするときにmyPackageBを使用します。
これは意味がありますか?私はSpring/Hibernateに少し慣れていないので、これはベースから大きく外れている可能性があります。