是否可以将 SpringData-JPA 与 hibernate4.LocalSessionFactoryBean 一起使用?

jac*_*ack 3 spring hibernate spring-data spring-data-jpa

我已经在我的代码中直接使用 Hibernate 4LocalSessionFactoryBean和 a了SessionFactory

我现在想在我的代码中包含 Spring-Data-JPA。

但是 Spring-Data 需要一个EntityManagerFactory才能工作,可以通过LocalContainerEntityManagerFactoryBean. 这些Bean可以在一个Spring项目中共存LocalSessionFactoryBean 吗?LocalContainerEntityManagerFactoryBean

(或者一个可以被另一个适应吗?)最佳实践是什么?

M. *_*num 7

尽管它们可以共存,但这会产生问题,特别是如果您想让它们参与同一事务。但是,如果您切换逻辑并配置 aLocalContainerEntityManagerFactoryBean而不是 a LocalSessionFactoryBean,则可以使用HibernateJpaSessionFactoryBean来访问底层SessionFactory.

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <!-- Your properties here -->
</bean>

<bean id="sessionFactory" class="org.springframework.orm.jpa.vendor.HibernateJpaSessionFactoryBean">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
Run Code Online (Sandbox Code Playgroud)

现在您两者都拥有,并且可以参与同一交易。

该解决方案也记录在 Spring Data JPA 参考指南的FAQ 部分中。