13

Hibernate 4.1、Spring 3.1、および JPA 2.0 を使用するプロジェクトに取り組んでおり、インターネットから収集したものが正しいことを確認したいと考えています。

JPA entityManager を使用するか、休止状態固有の sessionFactory を使用するかを決定しようとしています。

最初は、entityManager と完全な JPA 仕様を使用することを計画していたので、私のプロジェクトは Hibernate から分離され、何かに切り替えることができました。

ただし、entityManager にはいくつかの非常に重大な制限があるようです。

私の質問:

完全な JPA 仕様と entityManager を使用したい唯一の理由は、Hibernate を別の JPA 2.0 互換 ORM に比較的簡単に切り替えることができるからです。entityManager を使用することによるパフォーマンス/機能/プログラミングの容易さの利点は本当にありませんか?

第二に、休止状態の sessionFactory には、entityManager よりも多くの利点があるようです。これまでのところ、entityManager がエンティティのリストのバッチ挿入を実行できないという問題に遭遇しました。sessionFactory は自動生成されたエンティティ ID を自動的に返すことができることも読みましたが、entityManager ではトランザクションを終了するか、永続コンテキストをフラッシュして新しく生成された ID をプルする必要があります。

自分のプロジェクトが Hibernate から比較的分離されているというアイデアは気に入りましたが、最初から効率的なデータベース更新を記述できるようにしたいと考えていました。ですから、休止状態と sessionFactory 用に構成されているプロジェクトに切り替える必要がありますよね?

4

2 に答える 2

2

JPAは、jdbcのインターフェースであるHibernateのインターフェースであるため、jdbcに近づくほど、クエリをより細かく制御できますが、オブジェクト/リレーショナル永続性からさらに離れます。はい、Hibernate には現時点で jpa が提供していないツールがいくつかある場合があります (つまり、休止状態の空間)。そして、@Transactional アノテーションが Spring で機能する方法は、session.open() ... session.beginTranscation ...session.close ...etc ... このすべての詳細が必要ないため、hibernate を使用するか jpa を使用するかは問題ではありません休止状態のコードはなくなりました! Hibernate と素晴らしい本に関する優れたドキュメントもあります。JPAに関しては、アンバーブックを見つけたとは言えません...

于 2013-09-19T11:07:21.753 に答える