web-dev-qa-db-ja.com

spring-jdbcとspring-data-jdbcとそれらがサポートするもの

Spring-jdbc(最新のSpringリリースで欠落しているもの)とspring-data-jdbcの違いは何ですか?.
違いがありますか、それとも単なる名前の変更ですか(リポジトリにこれが表示されません)。

また、バージョンのサポートされているターゲット(DB/JDBC仕様/ JDK)はどこに記述されていますか?

例えばOracleのプレーンJDBCの場合、その情報は次のとおりです。 http://www.Oracle.com/technetwork/database/enterprise-edition/jdbc-faq-090281.html#01_03_1
(例:Oracle DB 12.1/12cR1上のJava7/Java8上のojdbc7.jarにあるJDBC Spec 4.1)

しかし、spring-jdbcの場合は見逃しています。その情報はどこにありますか?

9
PaulEdison

spring-jdbc`

spring-jdbcのドキュメントは基本的にここにあります:

https://docs.spring.io/spring/docs/current/spring-framework-reference/data-access.html

Springプロジェクトspring-jdbcを具体的に示しているわけではありませんが。このプロジェクトは、Spring Frameworkで使用できるプレーンなJDBC DataSource上のすべてのSpring抽象化を提供するだけです。たとえば、 Spring DataSources は、@Transactionalアノテーションのように、Springのトランザクション管理機能にうまくフックします。また、JdbcTemplateはこのモジュールの一部です。このモジュールを使用すると、SQLステートメントを実行し、Resultsetからオブジェクトを抽出できます。例外処理や、ステートメントや接続などの適切なクローズの厄介な詳細を処理する必要はありません。

spring-data-jdbc

一方、spring-data-jdbcは、spring-jdbcに対してSpring Dataの抽象化を提供します。つまり、Spring Data CrudRepositoryと単純な「エンティティ」(JPAエンティティではない!)を作成でき、Spring Dataと同様に、クエリを作成します。 JDBCを介してネイティブCRUDクエリを作成するには この例のようにspring-data-examples git repo

参照されている例をデモとして使用します。

interface CategoryRepository extends CrudRepository<Category, Long> {}

上記のコードは必要なものすべてです(Categoryオブジェクト名をテーブル名のソースとして(NamingStrategyに基づいて)イントロスペクションを使用し、そのプロパティを列としてJPAと同様ですが、JPAを使用しません。

そのように自分で書くのではなく:

@Repository
public class CategoryRepository {
   public void create(Category category) {
      jdbcTemplate.execute("insert...");
   }

  // The rest of my other CRUD operations
}
8
Dovmo