java - spring-jdbc 与 spring-data-jdbc 以及它们支持什么

标签 java spring jdbc 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 规范 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's DataSources它很好地连接到 Spring 的事务管理功能,例如 @Transactional 注释。 此外,JdbcTemplate 是该模块的一部分,它允许您执行 SQL 语句并从 ResultSet 中提取对象,而无需处理异常处理或正确关闭语句的讨厌细节、连接等。

spring-data-jdbc

另一方面,

spring-data-jdbc 提供了 spring-jdbc 之上的 Spring Data 抽象。也就是说,您可以创建一个 Spring Data CrudRepository 和一个简单的“实体”(不是 JPA 实体!),就像 Spring Data 所做的那样,它会为您创建查询,而无需您编写 native 代码通过 JDBC 进行 CRUD 查询,as in this example on the spring-data-examples git repo .

以引用的例子作为演示:

interface CategoryRepository extends CrudRepository<Category, Long> {}

上面的代码是您可能需要的全部(使用对 Category 对象名称的内省(introspection)作为表名称的来源(基于 NamingStrategy),它的属性如下列,同样类似于 JPA,但不使用 JPA

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

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

  // The rest of my other CRUD operations
}

关于java - spring-jdbc 与 spring-data-jdbc 以及它们支持什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51923060/

相关文章:

java - 运行 <jdbc :initialize-database> at the beginning of context creation

java - ResultSet 行计数通过 .getRow() 使用 JDBC-ODBC 和 MS Access 给出错误答案

java - 从数据库而不是 xml 触发quartz作业

Java SSLEngine 示例

java - 从 Jhipster 中的 URL 中删除哈希 (#)(java 和 angular 6)

jsp - jSTL <c:foreach错误 “attribute items does not accept any expressions”

java - Java 的 SQL JDBC 拦截器,可以跟踪可疑的 SQL 查询

java - jar 中未找到主类异常

java - 当我尝试发布到我的 spring api 时 403 被禁止?

javascript - 如何使用 Spring MVC 和 ThymeLeaf 正确验证复选框?