gpt4 book ai didi

java - 使用两个事务管理器和 session 工厂以及 spring 和 hibernate 注释

转载 作者:行者123 更新时间:2023-12-01 15:39:41 25 4
gpt4 key购买 nike

我在 applicationContext 中定义了两个事务管理器,引用两个完全不同的 sessionFactory。我正在尝试对其中一个事务管理器使用注释,但它似乎将所有注释应用于两个事务管理器。

我要迁移到的新数据库有 <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。

关于java - 使用两个事务管理器和 session 工厂以及 spring 和 hibernate 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8271950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com