我很好奇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的地方-在哪里可以找到这些信息?
答案 0 :(得分:6)
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
s很好地融入了Spring的事务管理功能,例如@Transactional
注释。
此外,JdbcTemplate
是此模块的一部分,它使您可以执行SQL语句并从结果集中提取对象,而无需处理异常处理或正确关闭语句,连接等的令人讨厌的细节。
spring-data-jdbc
spring-data-jdbc
在spring-jdbc
上提供了Spring Data抽象。也就是说,您可以创建一个Spring Data CrudRepository
和一个简单的“实体”(不是JPA
实体!),并且像Spring Data一样,它将为您创建查询,而无需您编写通过JDBC as in this example on the spring-data-examples
git repo进行本机CRUD查询。
以引用的示例为例:
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
}