spring-jdbc vs 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
(例如:ojdbc7中的JDBC Spec 4.1.jar Oracle DB 12.1 / 12cR1上的Java7 / Java8)

但是我错过了spring-jdbc - 我在哪里找到这些信息?


答案 1

spring-jdbc

的文档基本上在这里:spring-jdbc

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

虽然它没有特别指出你 到春天项目 。这个项目只是提供了所有关于普通JDBC的Spring抽象,你可以用Spring框架来使用。例如,Spring的DataSource很好地与Spring的交易管理功能挂钩,就像注释一样。此外,是此模块的一部分,它允许您执行 SQL 语句并从 中提取对象,而无需处理异常处理或正确关闭语句、连接等的令人讨厌的细节。spring-jdbcDataSource@TransactionalJdbcTemplateResultSet

spring-data-jdbc

spring-data-jdbc另一方面,提供了 弹簧数据对 的抽象。也就是说,您可以创建一个Spring Data和一个简单的“实体”(不是JPA实体!),并且,就像Spring Data所做的那样,它将为您创建查询,而无需在JDBC上编写本机CRUD查询,spring-data-examplegit repo上的此示例所示spring-jdbcCrudRepository

使用引用的示例作为演示:

interface CategoryRepository extends CrudRepository<Category, Long> {}

上面的代码是你所需要的(使用对象名称的内省作为表名的源(基于 a),它的属性作为列,再次类似于 JPA,但不使用 JPACategoryNamingStrategy

而不是像这样写你自己的:

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

  // The rest of my other CRUD operations
}

答案 2

推荐