0

私が参加した新しいプロジェクトでは、Hibernate と JPA という用語を同じ意味で使用し続けています。それで、私はコードに飛び込み、この全体がどのように機能するかを理解しようとしました(Spring、JPA、およびHibernateの世界は初めてです)。理解を深めるために、ここにコードを入れてみます。1) @Configuration クラスがあり、次のものがあります。

@Resource
private HibernateJpaVendorAdapter hibernateOracleJpaVendorAdapter;

LocalContainerEntityManagerFactoryBean entityManager = 
new LocalContainerEntityManagerFactoryBean();
entityManager.setJpaVendorAdapter(hibernateOracleJpaVendorAdapter);
entityManager.setPersistenceUnitName("abc");
             .
             .

したがって、この構成クラスでは、EntityManagerFactory を返しています。

2) 次に、@Persistor とマークされた永続化クラスがあり、リポジトリのメソッドが呼び出されます (たとえば、保存操作用)。

  blahblahRepository.save(blahblahEntity, abcdef); 

3) 最後に、@Repository アノテーションが付けられたリポジトリ クラスがあります。次に、次のコードがあります。

@PersistenceContext(unitName = "same as the name in persistence.xml")
protected EntityManager entityManager;

「保存」メソッドは、JPA の永続化メソッドをラップします。

getEntityManager().persist(entityObject);

私の質問は次のとおりです。1)hibernateJpaVendorAdapter以外にHibernateについての言葉はありません。ワークスペース全体を検索したところ、構成ファイル内に hibernate という単語が 3 つしか出現していませんでした。2)私が持っている知識から、EntityManagerFactoryまたはEntityManagerのいずれかを使用する必要がありますが、両方を行っていますか?

4

1 に答える 1

0

Hibernate は、JPA 仕様の実装の 1 つです。プロジェクトは JPA 実装として Hibernate を選択したため、Hibernate を委任する JPA API を使用します。特定の Oracle または PostgreSQL ドライバーに委譲する JDBC API を使用する場合と同様です。

EntityManagerFactory は、その名前が示すように、EntityManager のファクトリーです。両方を使わない理由がわかりません。EntityManager は JPA API のメイン インターフェースであり、すべてのデータベース操作 (検索、永続化、マージ、クエリなど) を実行するために使用されます。EntityManagerFactory は、EntityManager の作成を要求する前に構成する必要があります。

于 2013-01-13T16:23:25.270 に答える