spring配置文件示例:
<bean id="jpaDialect" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory"ref="entityManagerFactory"/>
<property name="jpaDialect"ref="jpaDialect"/>
</bean>
<bean id="emf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
</property>
....
</bean>
和 persistence.xml jpa 文件:
<persistence-unit name="EmployeeService">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
</persistence-unit>
如您所见,jpa 提供程序相关信息设置了 3 次。在事务管理器 bean、实体管理器工厂 bean 和持久性单元配置中:
<property name="jpaDialect"ref="jpaDialect"/>
...
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
</property>
...
<provider>org.hibernate.ejb.HibernatePersistence</provider>
但实际上在我的项目中,我只配置了带有提供程序的持久性单元。它奏效了。
所以我的问题是提供者、方言和供应商选项之间有什么区别?我必须设置所有这些,还是可以跳过其中一些?例如,我可以设置为 EntityMangerFactory - Hibernate 的供应商,作为事务管理器中的方言 - Eclipse 和持久性单元配置中的提供者 - 其他东西,例如 TopLink。
我不清楚。请解释。