将尝试逐行向您解释:
<bean id="jpaDialect" />//Should ideally be <bean id="jpaDialect" />
- 这个bean定义了您将要使用的jpaDialect。JpaDialect是一个接口,封装了标准JPA 1.0不提供的某些功能,例如对基础JDBC连接的访问。该策略主要用于JPA提供程序的独立使用。与JTA事务一起运行时,其大多数功能都不相关。还允许为Spring提供的可移植但功能更强大的EntityManager和EntityManagerFactory子接口提供增值方法。
- 由于您已经提供了类as
/>
,因此可以Spring
将特定于供应商的行为插入到Spring的EntityManagerFactory
创建者中,并且可以用作所有特定于供应商的属性的单个配置点。这是spring自己的自定义实现JpaVendorAdapter
。
对于您声明的第二个bean:
<bean id="transactionManager" > <property name="entityManagerFactory"ref="entityManagerFactory"/> <property name="jpaDialect"ref="jpaDialect"/></bean>
- 您告诉’Spring’配置
transactionManager
其属性为entityManagerFactory
和的jpaDialect
。由于这些属性必须特定于hibernate
这些设置。的entityManagerFactory
和jpaDialect
现在被特别设置为hibernate
(或供应商)。
至于第三个豆
<property name="jpaDialect"ref="jpaDialect"/>...<property name="jpaVendorAdapter"> <bean /></property>...<provider>org.hibernate.ejb.HibernatePersistence</provider>
该
<provider>告诉Spring使用
hibernate提供者和类
org.hibernate.ejb.HibernatePersistence是Hibernate的EJB3持久性提供者实现。
简而言之,您需要配置它们以告知spring应该使用哪个ORM功能。
您的应用程序只能配置持久性和提供程序的原因是因为供应商适配器会自动传递提供的持久性,即
HibernatePersistence通过
getPersistenceProviderin
JpaVendorAdapter。
仔细阅读文档,以了解这些类如何相互链接。
编辑 :如@TheKojuEffect所指出的,理想情况下,第一个bean的形式应为:
<bean id="jpaDialect" />
谢谢。错过了
vendorAdapter。
您可以参考:
- hibernateJpa方言
- HibernateVendor适配器
- HibernatePersistence
希望能帮助到你。:)



