21

我很好奇 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。 Oracle DB 12.1/12cR1 上 Java7/Java8 上的 jar)

但我想念 spring-jdbc - 我在哪里可以找到这些信息?

4

1 回答 1

16

spring-jdbc

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

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

虽然它并没有特别指出你的 Spring 项目spring-jdbc。这个项目只是提供了所有DataSource可以与 Spring 框架一起使用的普通 JDBC 上的 Spring 抽象。例如,Spring 的DataSources很好地与 Spring 的事务管理功能挂钩,如@Transactional注解。此外,这JdbcTemplate是该模块的一部分,它允许您执行 SQL 语句并从ResultSets 中提取对象,而无需处理异常处理或正确关闭语句、连接等的令人讨厌的细节。

spring-data-jdbc

spring-data-jdbc,另一方面,提供 Spring Data 抽象超过spring-jdbc. 也就是说,您可以创建一个 Spring DataCrudRepository和一个简单的“实体”(不是 JPA 实体!),并且正如 Spring Data 所做的那样,它会为您创建查询,而无需您通过 JDBC 编写本机 CRUD 查询,如下所示spring-data-examplesgit repo上的示例

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

interface CategoryRepository extends CrudRepository<Category, Long> {}

上面的代码就是您所需要的(使用对Category对象名称的自省作为表名的源(基于 a NamingStrategy)并将其属性作为列,再次类似于 JPA,但不使用 JPA

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

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

  // The rest of my other CRUD operations
}
于 2018-08-20T01:29:38.070 回答