簡體   English   中英

使用兩個帶有Spring和Hibernate注釋的事務管理器和會話工廠

[英]Using two transaction managers and session factories with spring & hibernate annotations

我在applicationContext中定義了兩個事務管理器,它們引用了兩個完全不同的sessionFactories。 我正在嘗試對其中一個事務管理器使用批注,但是似乎正在將所有批注應用於兩個事務管理器。

我要遷移到的新數據庫具有<property name="hbm2ddl.auto">create</property> ,而我要遷移的另一個數據庫具有<property name="hbm2ddl.auto">validate</property>

我已經用@Entity注釋了我的新域對象,hibernate試圖在舊數據庫上驗證這些類,我以為我已經設置為忽略注釋(通過不指定注釋)。 以下是appContext的相關片段:

    <tx:annotation-driven transaction-manager="transactionManager1" />
    <context:property-placeholder location="file:${catalina.home}/conf/database.properties" ignore-unresolvable="true"/>

    <bean id="sessionFactory1" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" p:dataSource-ref="dataSource1" p:configLocation="WEB-INF/classes/hibernate.cfg.xml" p:packagesToScan="com.mycompany"/>

<!-- Declare a datasource that has pooling capabilities-->   
<bean id="dataSource1" class="com.mchange.v2.c3p0.ComboPooledDataSource" 
p:driverClass="${app.driverClassName}" p:jdbcUrl="${app.url}" 
p:user="${app.username}" p:password="${app.password}"

    <!-- Declare a transaction manager-->
    <bean id="transactionManager1" class="org.springframework.orm.hibernate3.HibernateTransactionManager" p:sessionFactory-ref="sessionFactory1" />

和舊數據庫在同一appContext中:

<bean id="sessionFactory2" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"    p:dataSource-ref="dataSource2" p:configLocation="WEB-INF/classes/hibernateTraveller.cfg.xml" p:packagesToScan="com.mycompany"/>

<!-- Declare a datasource that has pooling capabilities-->   
<bean id="dataSource2" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" 
p:driverClass="${app2.driverClassName}" p:jdbcUrl="${app2.url}" 
p:user="${app2.username}" p:password="${app2.password}"

<!-- Declare a transaction manager-->
<bean id="transactionManager2" class="org.springframework.orm.hibernate3.HibernateTransactionManager" 
            p:sessionFactory-ref="sessionFactoryTraveller"> 
<qualifier value="legacyDB"/>
</bean>

有指針嗎?

對於不使用注釋的舊數據庫,應使用LocalSessionFactoryBean而不是AnnotationSessionFactoryBean AnnotationSessionFactoryBean的全部目的是使用注釋。 如果您不想使用注釋,則可以使用LocalSessionFactoryBean。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM