11

似たような質問をたくさん見つけました

しかし、次の質問には誰も答えません。使用する従来の休止状態アプローチorg.hibernate.SessionFactoryと JPAjavax.persistence.EntityManager実装の違いは何ですか? この JPA 実装はラッパーを使用し、ラッパーのように動作すると聞きましたが、org.hibernate.SessionFactoryそれは本当ですか?

4

4 に答える 4

17

それはそう。

JPAは、使用されている永続層から抽象化できるAPIです。Hibernateは、EntityManagerとして機能するインターフェースの実装を提供しますadapter-それは、hibernateと同じ基本的なメソッドを使用しますSessionManager

たとえば、実装をEclipse Linkに切り替えて、ソースコードを変更する必要がないという考え方です。

于 2013-02-21T12:53:24.977 に答える
2

これがあなたの質問の答えです


org.hibernate.SessionFactory と JPA javax.persistence.EntityManager
実装を使用した従来の hibernate アプローチの違いは何ですか?

org.hibernate.SessionFactory 

下線の ORM を IBatis に変更する場合 (たとえば)、コードも変更する必要があります。

javax.persistence.EntityManager 

アンダーライン ORM を IBatis に変更する場合 (たとえば)、コードを変更する必要はありません。

于 2013-02-21T12:45:19.067 に答える
2

あなたの最初の質問に、

JPA は、Java プラットフォームを使用したアプリケーションでのリレーショナル データの管理について記述した Java API 仕様です。Hibernate は、JPA 仕様に準拠した ORM (Object Relational Mapping) ライブラリです。

JPA は、Hibernate によって実装される一連のルールと考えることができます。

そして、2 番目の質問に答えてください。

JPA は単なる抽象化された永続レイヤーであるため、実装が必要です。Hibernate は、hibernate SessionManager を使用する EntityManager インターフェイスを実装します。

このようにして、実装方法から完全に切り離されます。つまり、Hibernate、OenJPA、またはその他のいずれかにいつでも切り替えることができ、追加のコード変更は必要ありません。

于 2014-02-12T09:28:28.487 に答える