Spring Data-JPAとJPAの違いについて少し混乱しています。 JPAは、Javaオブジェクトを一般的なORMテクノロジーを使用してリレーショナルデータベースに永続化するための仕様であることを知っています。
さて、Spring Data JPAとは何なのか。 Spring Data JPAはJPAよりも多くの機能(インターフェース)を追加していますが、それでも指定されているだけですか、それともJPAプロバイダーですか?
Spring Data JPAがリポジトリを回避するのを見ました(DAOレイヤー:私が間違っていなければ)。 「Spring Data JPA + Hibernate」を使用した場合と「Hibernate」の指示のみを使用した場合の違いは何ですか?
私はSpringを見ました、JPAはリポジトリを回避します(DAOレイヤー:私が間違っていなければ)。 「Spring JPA + Hibernate」を使用した場合と「Hibernate」を直接使用した場合の違いは何ですか?
あなたが言ったように、JPAは仕様ですwhile Hibernateはその仕様の特定の実装です(これらの実装は通常Providersと呼ばれます)。 Hibernateを使用することで、必要に応じて別のオプションに切り替える自由を制限するプロバイダーに自分自身を結び付けます(たとえば、Hibernateには開発プロセスを停止するバグがあるため、代わりにEclipseLinkまたはObjectDBを使用します)。
引用Spring Data JPA 'sドキュメント:
アプリケーションのデータアクセスレイヤーの実装は、かなり以前から面倒でした。定型コードが多すぎます。ドメインクラスは貧弱であり、実際のオブジェクト指向またはドメイン駆動の方法で設計されていません。
これらの両方のテクノロジーを使用すると、リッチドメインモデルの永続性に関して開発者の作業がはるかに容易になります。それにもかかわらず、リポジトリを実装するための定型コードの量は、特に非常に多くなっています。したがって、Spring Dataのリポジトリ抽象化の目標は、さまざまな永続ストアのデータアクセスレイヤーを実装する労力を大幅に削減することです。
まとめると、JPAの上に別の抽象化層を追加します。これは、SpringコンテキストでPersistence Layerをサポートする標準ベースの設計を定義するようなものです。これらの定義済みインターフェース(Springに知られている)は、フレームワークがJPAを使用して結果を提供するサービスを提供します。 Springがプロジェクトをスキャンして見つけることができる方法でリポジトリを定義します。
<repositories base-package="com.acme.repositories" />
したがって、コンテナのコンテキスト内またはコンテナ外で使用できます。
さて、Spring、JPAとは何なのか。 Spring、JPAはJPAにいくつかの機能(インターフェイス)を追加しましたが、まだ指定されているだけですか、それともJPAプロバイダーですか?
Spring Data JPAは、定義したプロバイダーを使用してJPA仕様を参照することで、内部でサポートされるリポジトリを実装するための定義を提供します。
JPAと呼ばれることもあるJava Persistence APIは、Java Platform、Standard Edition(JavaSE)および_を使用して、アプリケーションのリレーショナルデータを管理するJavaフレームワークです。Java Platform、Enterprise Edition(JavaEE)。
このコンテキストでの永続性は、3つの領域をカバーしています:
Spring Data JPAは、JPAベースのリポジトリの実装を容易にする包括的なSpring Dataプロジェクトの一部です。
機能: