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の場合は見逃しています。その情報はどこにありますか?
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 DataSource
s は、@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
}