我很好奇 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 DataSource
s它很好地连接到 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/