HibernateとSpring Data JPAの主な違いは何ですか? HibernateまたはSpring Data JPAを使用すべきでない場合また、Spring JDBCテンプレートは、いつHibernate/Spring Data JPAよりも優れたパフォーマンスを発揮しますか?
HibernateはJPA実装であり、Spring Data JPAはJPAデータアクセス抽象化です。 Spring Dataは、GenericDao
カスタム実装のソリューションを提供します。また、メソッド名の規則を使用してJPAクエリを生成することもできます。
Spring Dataでは、Hibernate、Eclipse Linkまたは他のJPAプロバイダーを使用できます。非常に興味深い利点は、 @Transactional
アノテーションを使用して宣言的にトランザクション境界を制御できる です。
Spring JDBCははるかに軽量で、ネイティブクエリを対象としています。JDBCのみを使用する場合は、Spring JDBCを使用してJDBCの冗長性を処理することをお勧めします。
したがって、HibernateとSpring Dataは競合他社というよりも補完的なものです。
ここで使用している3つの異なるものがあります。
だからspring data jpa and spring + hibernate works-
アプリケーションにspring + hibernateを使用しているとしましょう。ここで、hibernateのSessionFactoryを使用してcrud操作を作成するdaoインターフェイスと実装が必要です。 Employeeクラスのdaoクラスを作成しているとしましょう。明日、アプリケーションで他のエンティティに対して同様のcrud操作を作成する必要があるかもしれません。したがって、ここで見ることができる定型的なコードがたくさんあります。
Spring data jpaでは、リポジトリ(crudrepository、jparepository)を拡張してdaoインターフェースを定義できるため、実行時にdao実装を提供できます。もうdao実装を書く必要はありません。
SpringJPAがライブを簡単にすることに同意しません。はい、それはいくつかのクラスを提供し、いくつかの簡単なDAOを高速にすることができますが、実際にはそれがすべてです。 findById()以上のことを行うか保存する場合は、地獄を通過する必要があります。
なぜ独自のトランザクション管理が不利なのですか? Java 1.8では、デフォルトのメソッドをインターフェイス、Springアノテーションベースのトランザクションに許可するため、simpleは機能しません。
残念ながら、SpringJPAはリフレクションに基づいており、場合によってはメソッド名またはエンティティパッケージをアノテーション(!)にポイントする必要があります。それがリファクタリングが大きなクラッシュを引き起こす理由です。悲しいことに、@ TransactionalはプライマリDSのみで機能します:(複数のDataSourceがある場合は、覚えておいてください-トランザクションはプライマリでのみ機能します:)
HibernateとSpring Data JPAの主な違いは何ですか?
HibernateはJPA互換、SpringJPA Spring互換です。 SpringJPAをSpring内で使用できる場合(たとえばSpringBoot)、HibernateJPA DAOはJavaEEまたはHibernate Standaloneで使用できます
HibernateまたはSpring Data JPAを使用すべきでない場合また、Spring JDBCテンプレートは、いつHibernate/Spring Data JPAよりも優れたパフォーマンスを発揮しますか?
多くの結合を使用する必要がある場合、または複数のデータソース接続を持つSpringを使用する必要がある場合にのみ、Spring JDBCを使用します。通常、JPAのJPAは避けてください。
しかし、私の一般的なアドバイスは、Daobab( http://www.daobab.io )という新しいソリューションを使用することです。 Daobabは私のJavaであり、JPAエンジンインテグレーターでもあり、あなたの仕事に大いに役立つと信じています:)
Hibernateは、データベースのJavaオブジェクトの仕様である「JPA」の実装です。
異なるORMSを切り替えることができるため、w.r.t JPAを使用することをお勧めします。
JDBCを使用する場合、SQLクエリを使用する必要があるため、SQLに習熟している場合はJDBCを使用してください。
Spring Data/Spring JDBCを使用することをお勧めします。
JPAの学習曲線の量が多く、デバッグが難しい場合があります。一方、SQLを完全に制御できる一方で、クエリの最適化とパフォーマンスの向上がはるかに容易になります。 SQLは、DBAまたはデータベースをよりよく理解している人と簡単に共有できます。