JPA provider vs. dialect vs. vendor in the Spring contaniner configuration
Example of spring configuration file:
<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>
and the persistence.xml jpa file:
<persistence-unit name="EmployeeService">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
</persistence-unit>
As you can see the jpa provider-related information is set 3 times. In
transaction manager bean, entity manager factory bean and in the
persistence unit configuration:
<property name="jpaDialect"ref="jpaDialect"/>
...
<property name="jpaVendorAdapter">
<bean
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
/>
</property>
...
<provider>org.hibernate.ejb.HibernatePersistence</provider>
But actually in my project I configured only the persistence unit with
provider. And it worked.
So my question is what's the difference between provider, dialect and
vendor options? Must I set all of them or, I can skip some of them? Can I
set, for example as a vendor for EntityMangerFactory - Hibernate, as a
dialect in transaction manager - Eclipse and as a provider in the
persistence unit configuration - something else, TopLink, for example.
It's no clear to me. Please explain.
No comments:
Post a Comment