web-dev-qa-db-ja.com

Spring Data JPAはJPA実装ですか?

私はSpringFrameworkを「本当に」理解しようとしています。 Spring Core(DI)とSpringMVCについてある程度理解しています。

データ部分については、現在Spring DataJPAに焦点を当てています。私が理解しているように、JPAは標準仕様であり、複数の実装があり、Hibernateが有名です。

さて、Spring Data JPAを始めたとき、Spring Data JPAはJPA仕様の独立した実装であるという印象を受けました。私が間違っていることがわかった。

私が正しく理解していれば、Spring Data JPAはSpringによって提供される抽象化レイヤーであり、内部で他のJPAプロバイダー(Hibernateの例)を使用するため、通常は次のようになります。

Application ---> Spring Data JPA --> Hiberate --> JDBC ----> DB

私の理解は正しいですか?もしそうなら、Spring Data JPAは誤解を招くものではありませんか?それ自体はJPAプロバイダーではなく、他のJPA providerの上で機能する単なる抽象化レイヤーです。

Springフレームワークを本当に理解しているのか、それとも完全に複雑なフレームワークなのかわかりません。

誰かが私がそれを理解するのを手伝ってくれますか?

21
CuriousMind

名前が間違っているとは思いません(免責事項:私はプロジェクトリーダーです)。すべてのSpringDataプロジェクトは、名前にベースのストアまたはAPIをリストします。 Spring DataJPAは基本的にSpringDataforJPAであり、Spring DataMongoDBがSpringDataforMongoDB、Spring BatchがSpringforバッチアプリケーションであるように、Spring IntegrationはSpringfor統合プロジェクト。

JPAの依存関係グラフを修正してください。

Application -> Spring Data JPA -> JPA <- Hibernate -> JDBC -> DataSource

-> — uses
<- — implements

MongoDBについても同じです。

Application -> Spring Data MongoDB -> MongoDB Java driver -> MongoDB

など。SpringDataJPAがJPAの実装であるという印象をどこで得たのか、私はまだ興味があります。 プロジェクトページリファレンスドキュメント もどこにも記載されていません。実際、特に プロジェクトページ は、プロジェクトが提供する機能について非常に明確です。また、 アンブレラプロジェクトの説明 を学習すると役立つ場合があります。これは、それに含まれるすべてのモジュールの基本的なコンテキストを設定しようとします。

33
Oliver Drotbohm