处理一个庞大复杂的应用程序,该应用程序目前正在使用Hibernate LocalSessionFactoryBean,HibernateTransactionManager和HibernateTemplate。是否有可能我可以将JPA用于我的新功能开发,以便我可以使用SPRING DATA JPA来处理我的持久层?我目前的配置如下。
<bean id="hibernateSessionFactory" destroy-method="destroy"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="mappingLocations">
<list>
<value>classpath*:/hbm/*.hbm.xml</value>
<value>classpath*:/hid-hbm/*.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop> -->
<prop key="hibernate.dialect">org.hibernate.dialect.DB2Dialect</prop>
</props>
</property>
<property name="dataSource">
<ref bean="myDataSource" />
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="hibernateSessionFactory"/>
</bean>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="hibernateSessionFactory" />
</bean>
但是,我想为新东西添加LocalContainerEntityManagerFactoryBean,JpaTransactionManager。这两个都可以存在于同一个项目中吗?
<bean
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
id="entityManagerFactory">
<property name="dataSource" ref="dataSource" />
</bean>
<bean class="org.springframework.orm.jpa.JpaTransactionManager"
id="transactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
答案 0 :(得分:0)
简短回答......是的,只要你将两个实现完全隔离,你就可以混合使用。
这也使您能够在将来的日期将“遗留”hibernate DAO迁移到Spring Data。
浏览你的代码,这一切看起来都不错,但我不确定当你的服务需要来自两个实现的DAO / Repos时,事务管理将如何表现。