Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在同一个应用程序中同时使用SpringJPA和Hibernate?_Java_Spring_Hibernate_Spring Data_Spring Data Jpa - Fatal编程技术网

Java 如何在同一个应用程序中同时使用SpringJPA和Hibernate?

Java 如何在同一个应用程序中同时使用SpringJPA和Hibernate?,java,spring,hibernate,spring-data,spring-data-jpa,Java,Spring,Hibernate,Spring Data,Spring Data Jpa,我正在使用Hibernate 5和Spring 5,我们希望我们的应用程序同时使用Hibernate和Spring JPA 我们如何在applicationContext.xml文件中为这两项配置事务管理器,并在应用程序中使用它们 对于实体管理器和会话这样的bean也是一样的吗 谢谢您不能在同一个应用程序中同时使用它们 然而,hibernate 5的所有功能也可以通过JPA实现。您能否更具体地解释一下,为什么既需要JPA is规范,又需要hibernate实现JPA。不知道你到底在问什么。 如果

我正在使用Hibernate 5和Spring 5,我们希望我们的应用程序同时使用Hibernate和Spring JPA

我们如何在applicationContext.xml文件中为这两项配置事务管理器,并在应用程序中使用它们

对于实体管理器和会话这样的bean也是一样的吗


谢谢

您不能在同一个应用程序中同时使用它们


然而,hibernate 5的所有功能也可以通过JPA实现。您能否更具体地解释一下,为什么既需要JPA is规范,又需要hibernate实现JPA。不知道你到底在问什么。 如果您使用的是Hibernate,您将配置会话事务管理器

e、 g


org/springframework/samples/petclinic/hibernate/petclinic.hbm.xml
hibernate.dialogue=${hibernate.dialogue}
  • SpringJPA是一种标准,有供应商为其提供实现。冬眠就是其中之一。所以基本上你可以简单地使用JPA,而不是两者的混合

  • 对于事务管理器,您可以这样定义它们

  • //冬眠

    <bean id="txManager"    class="org.springframework.orm.hibernate5.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    
    
    
    //JPA可以将此用于da

    <bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
       <property name="entityManagerFactory" ref="myEmf" />
    </bean>
    
    
    
    更多信息:

  • 对于bean,您已经指定了文件夹/路径(packagesToScan),JPA应该在其中查找带注释的bean以将它们映射到DB

    <bean id="entityManagerFactory" 
      class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
      p:dataSource-ref="dataSource"
      p:packagesToScan="${jpa.entity.packages}">
    
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
              p:showSql="${hibernate.show_sql}"/>
    </property>
    
    <property name="jpaProperties">
        <props>
            <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
            <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
        </props>
    </property>
    
    
    ${hibernate.format_sql}
    ${hibernate.hbm2ddl.auto}
    


  • 我在这里谈论的是SpringDataJPA:向后兼容。我们正在扩展我们的应用程序,并希望开始使用Spring Data JPA,但仍保留旧的hibernate实现。最好将新应用程序开发为单独的微服务,并使用Spring Data JPA。。
    <bean id="entityManagerFactory" 
      class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
      p:dataSource-ref="dataSource"
      p:packagesToScan="${jpa.entity.packages}">
    
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
              p:showSql="${hibernate.show_sql}"/>
    </property>
    
    <property name="jpaProperties">
        <props>
            <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
            <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
        </props>
    </property>