スプリング構成ファイルの例:
<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 など) として設定できますか。
それは私には明らかではありません。説明してください。