私は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フレームワークを本当に理解しているのか、それとも完全に複雑なフレームワークなのかわかりません。
誰かが私がそれを理解するのを手伝ってくれますか?
名前が間違っているとは思いません(免責事項:私はプロジェクトリーダーです)。すべての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の実装であるという印象をどこで得たのか、私はまだ興味があります。 プロジェクトページ も リファレンスドキュメント もどこにも記載されていません。実際、特に プロジェクトページ は、プロジェクトが提供する機能について非常に明確です。また、 アンブレラプロジェクトの説明 を学習すると役立つ場合があります。これは、それに含まれるすべてのモジュールの基本的なコンテキストを設定しようとします。