我正在尝试从 Spring/hibernate 中的同一个 Java 类同时访问两个数据库。它们在结构上是相同的。它们都驻留在同一个 mySql 实例中。我将它们称为“myDatabaseA”和“myDatabaseB”。
我的计划是将 DAO 和 Entity 类复制到不同的包中,例如“com.entities.packageA”和“com.entities.packageB”。在实体中,我将使用表注释的“目录”关键字来消除数据库的歧义,例如
@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 有点陌生,所以这可能有点离谱。