祝福所有人 在我的spring应用程序中,我需要使用hibernate和两个不同的数据库(PostgreSQL和MySQL),我对配置不太满意,所以我需要一些关于如何操作的指南
我正在使用hibernate-postgresql的以下配置
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="annotatedClasses">
<list>
<value>com.project.domain.myDomain</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
</value>
</property>
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.postgresql.Driver" />
<property name="url">
<value>${db.url}</value>
</property>
<property name="username" >
<value>${db.username}</value>
</property>
<property name="password">
<value>${db.password}</value>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean
class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
在DAO中我为sessionFactory做了一个自动装配。
答案 0 :(得分:2)
如果你有两个数据库,并且想要两阶段提交,那么最好确保两者都使用XA驱动程序。
答案 1 :(得分:1)
唯一的方法是拥有一个堆栈的数据源(SessionFactory,Hibernate Template等)。然后,您可以在业务类中注入要使用的HIbernate Tempolate(如果要同时访问这两个DB,则可以注入两者)。
这是一个带有显式配置的DAO示例 ...
<bean id="db2SessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
...
</bean>
<bean id="db1Dao" class="ch.sbb.uno.dao.hibernate.UnoHibernateDaoSupport" scope="prototype">
<property name="sessionFactory" ref="db1SessionFactory" />
</bean>
<bean id="db2Dao" class="ch.sbb.uno.dao.hibernate.UnoHibernateDaoSupport" scope="prototype">
<property name="sessionFactory" ref="db2SessionFactory" />
</bean>
答案 2 :(得分:0)