<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などを設定することはできますか?
私には分かりません。説明してください。
良い説明ですが、私はあなたの答えが間違っていると思います。最初のbean 'jpaDialect'では' jpaVendorAdapter'を意味すると思います。あなたの答えを訂正する方が良いでしょう。 – TheKojuEffect
返事をありがとう。私はHibernateJpaVendorAdapterを見て、getJpaDialect()メソッドとgetPersistenceProvider()メソッドを見つけました。私はHibernateJpaVendorAdapterだけでエンティティマネージャファクトリを設定するのが正しいと思います。そして、アダプタクラスからjpa dialectとjpaプロバイダの両方を受け取るのに十分な理由があります。 – Alexandr