Пример файла конфигурации пружины:поставщик JPA против диалекте против поставщика в конфигурации Spring contaniner
<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 раза. В транзакции менеджер боба, менеджер сущности фабрики бобе и в конфигурации устройства настойчивости:
<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.
Мне это непонятно. Пожалуйста, объясни.
Хорошее объяснение, но я думаю, что вы допустили ошибку в своем ответе. В первом компоненте 'jpaDialect', я думаю, вы имели в виду' jpaVendorAdapter'. Было бы лучше, если вы исправите свой ответ. – TheKojuEffect
Спасибо за ответ. Я просмотрел HibernateJpaVendorAdapter и нашел методы getJpaDialect() и getPersistenceProvider(). Я думаю, было бы правильно настроить фабрику управления сущностями только с HibernateJpaVendorAdapter. И этого будет достаточно, так как диалект jpa и jpa-провайдер могут быть получены из класса адаптера. – Alexandr