Каково общее решение для нескольких источников данных? - PullRequest
1 голос
/ 18 января 2011

Привет всем В моем весеннем приложении мне нужно будет использовать hibernate с двумя разными базами данных (PostgreSQL и MySQL), и я не очень хорош в настройке, поэтому мне нужно некоторое руководство о том, как это сделать

Iя использую следующую конфигурацию для 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.

Ответы [ 3 ]

2 голосов
/ 18 января 2011

Если у вас есть две базы данных и вы хотите двухфазную фиксацию, лучше использовать драйверы XA для обеих.

1 голос
/ 18 января 2011

Единственный способ - использовать источники данных с одним стеком (SessionFactory, Hibernate Template и т. Д.). Затем вы можете внедрить шаблон HIbernate, который вы хотите использовать в своих бизнес-классах (или оба, если вы хотите получить доступ к обеим БД одновременно).

вот пример 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>
0 голосов
/ 18 января 2011

Возможно, вам нужны драйверы XA.

Пример приведен ниже

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...