なぜ Spring Data JDBC なのでしょうか?

Java の世界におけるリレーショナルデータベースの主な永続化 API は、確かに JPA であり、独自の Spring Data モジュールを持っています。なぜ別のものがあるのでしょうか?

JPA は、開発者を支援するために多くのことを行います。とりわけ、エンティティへの変更を追跡します。遅延読み込みを行います。さまざまなオブジェクト構造を、同等の幅広いデータベース設計にマッピングできます。

これはすばらしいことで、多くのことが非常に簡単になります。基本的な JPA チュートリアルを参照してください。しかし、JPA が特定のことを行う理由については、しばしば混乱を招きます。また、JPA では概念的に非常に単純なことがかなり難しくなります。

Spring Data JDBC は、以下の設計上の決定を受け入れることにより、概念的にはるかにシンプルになることを目指しています。

  • エンティティをロードすると、SQL ステートメントが実行されます。これが完了すると、完全に読み込まれたエンティティができます。遅延読み込みやキャッシュは行われません。

  • エンティティを保存すると保存されます。保存しない場合は保存されません。ダーティトラッキングもセッションもありません。

  • エンティティをテーブルにマッピングする方法の簡単なモデルがあります。おそらく、かなり単純な場合にのみ機能します。気に入らない場合は、独自の戦略をコーディングする必要があります。Spring Data JDBC は、アノテーションを使用して戦略をカスタマイズするための非常に限られたサポートのみを提供します。