首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多数据源的通用解决方案是什么?

多数据源的通用解决方案是什么?
EN

Stack Overflow用户
提问于 2011-01-18 18:36:31
回答 3查看 3.2K关注 0票数 1

在我的spring应用程序中,我需要在两个不同的数据库(PostgreSQL和MySQL)中使用hibernate,而且我对配置不是很在行,所以我需要一些关于如何配置的指南

我正在使用hibernate-postgresql的以下配置

代码语言:javascript
复制
<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制作了一个自动线缆。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-18 18:41:21

唯一的方法是必须使用一个堆栈(SessionFactory、Hibernate模板等)访问数据源。然后,您可以在业务类中注入您想要使用的HIbernate模板(如果您想同时访问两个数据库,也可以同时使用两者)。

下面是一个带有显式配置的DAO示例。

代码语言:javascript
复制
<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>
票数 1
EN

Stack Overflow用户

发布于 2011-01-18 18:46:21

如果您有两个数据库,并且希望进行两阶段提交,那么最好对这两个数据库都使用XA驱动程序。

票数 2
EN

Stack Overflow用户

发布于 2011-01-18 20:30:37

您可能需要XA驱动程序。

请参见下面的示例

http://docs.codehaus.org/display/BTM/Home

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4723045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档