web-dev-qa-db-ja.com

Spring + hibernate vs Spring Data JPA:違いはありますか?

初心者ではありませんが、これを本当に理解していることを確認するために、春のフレームワークを学習しようとしています(もう一度!)私はコアSpring(DI)について公正なアイデアを持っています。今、私はデータ層に焦点を当てています。

Spring and Hibernate」という用語に出会いました。私が解釈できるように、それはORMツール/ JPAプロバイダーとしてHibernateでSpring Frameworkを使用することを意味します。

今、「Spring Data JPA」に出会いました。 Spring Data JPAについてのSO、それはJPAの上の抽象化レイヤーであることを明らかにしました(そして、Spring Data JPAはHibernateまたは他のJPAプロバイダーを使用しています)。

今、これらの用語は同じですか?つまり、「Spring + hibernate」は「Spring Data JPA」と同じです。そうでない場合、違い/類似点は何ですか?

多くの用語/文(上記のように)が一見類似しているように見えますが、異なる場合があります。

41
CuriousMind

あなたが言っているように、Spring-data-jpaは、単なる古典的なSpring-JPA統合以上のものを提供します。 JPA/Hibernate統合により、主に

  • jPA/Hibernateトランザクションを使用した宣言的トランザクション管理
  • 例外翻訳
  • 注入可能なBeanとしてのJPA EntityManagerまたはHibernate SessionFactory

Spring-data-jpaを使用すると、これらすべてに加えて(その他の)

  • インターフェイス名のみのリポジトリ。メソッド名を使用してクエリを自動的に推論します
  • インターフェイスメソッドが返すクエリを定義する@Queryアノテーション
  • ページング可能なクエリの自動処理
  • 標準的なcrudリポジトリの基本クラス

これはほんの小さな紹介です。詳細については、ドキュメントを参照してください。

54
JB Nizet

春と冬眠について話すとき

  1. 休止状態を単独で読むと、マッピング(基本的にpojoとデータベース関係のマッピングの構成)および構成(ドライバークラス、url、ユーザー名、パスワード、方言などのデータベースに固有の構成)を使用することを理解できます。
  2. したがって、読み取り、書き込み、更新などを使用する場合は、hibernatesessionfactoryを取得し、トランザクションを開いてコミットする必要があります。各操作の多くの前作業と後作業。
  3. Hibernateをspringと統合する場合、springはこの構成を使用してアプリケーションコンテキストに保持し、hibernatetemplateを内部で使用するhibernatesessionfactoryであるラッパーを提供します。そのため、これらの操作を実行する際に、事前コードと事後コードをあまり気にする必要はありません。
  4. また、パフォーマンスを改善するためにキャッシュ(1次および2次キャッシュ)も提供しました。
  5. また、データベースに依存しないHQLで作業することもできます。データベース方言を使用して、データベース固有のsqlを生成します。

では、春+データJPAについて話しましょう

  1. ベースリポジトリインターフェースが付属しています(Spring Data Common、Spring JPAから)
  2. したがって、crud操作に興味があり、crud repositoryを拡張するだけで、springが実行時に実装を挿入するとします。
  3. アプリケーションに共通のメソッドを定義したい場合、Repositoryインターフェイスを拡張する新しいリポジトリインターフェイスを作成することでそれを行うことができます。そして、これをアプリケーション全体で使用できます。
  4. また、ネイティブsql or jpql.を使用できるクエリメソッドも提供します。
7
Bhagwati Malav

このリンク 役立つと思います:

JPAはJava Persistence APIです。これはオブジェクトリレーショナルマッピング用のJavaの標準APIです。

JPAは仕様にすぎません。使用するには、JPAの実装が必要です。 HibernateはJPAの最もよく知られ、最も使用されている実装の1つですが、EclipseLink JPAなどの他の実装もあります。

Spring Frameworkは、エンタープライズグレードのソフトウェアを簡単に作成できるようにするための大きなフレームワークです。 JPAを含む多くのJavaテクノロジーのサポートが含まれています。

Spring Frameworkはプロジェクトのコレクションで構成されており、これらのプロジェクトの1つはSpring Dataです。

Spring Dataの目標は、従来のリレーショナルデータベースからNoSQLデータベースまで、さまざまな種類のデータベースを簡単に操作できるようにすることです。 Spring Dataは、Spring Data JPAサブプロジェクトを介してJPAをサポートしています。

JPAを使用するプログラムを作成するには、少なくともHibernateなどのJPA実装が必要です。

アプリケーションにSpring Frameworkを使用している場合は、HibernateとともにSpring Data JPAを使用することをお勧めします。

1
Tanim reja