[英]spring-jdbc vs spring-data-jdbc and what are they supporting
我很好奇 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 框架一起使用的普通 JDBC DataSource
上的所有 Spring 抽象。 例如, Spring 的DataSource
很好地挂钩了 Spring 的事务管理功能,例如@Transactional
注释。 此外, 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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.