spring-boot-starter-jdbc 的 pom.xml 地址:
https://github.com/spring-projects/spring-boot/blob/v2.1.13.RELEASE/spring-boot-project/spring-boot-starters/spring-boot-starter-jdbc/pom.xml
spring-boot-starter-data-jdbc 的 pom.xml 地址:
https://github.com/spring-projects/spring-boot/blob/v2.1.13.RELEASE/spring-boot-project/spring-boot-starters/spring-boot-starter-data-jdbc/pom.xml
文本比对地址:http://study.100xgj.com/textdiff/
文本比对结果:
我们可以看到,主要存在三点不同:
spring-boot-starter-data-jdbc
底层依赖于 spring-boot-starter-jdbc
;spring-boot-starter-data-jdbc
相比 spring-boot-starter-jdbc
增加了 spring-data-jdbc
依赖。下面我们就一起探讨一下:为什么有了 spring-jdbc
后还需要增加 spring-data-jdbc
依赖,二者有什么不同?
Spring JDBC 和 Spring Data JDBC 都是 Spring Framework 中与 JDBC 相关的模块,它们之间的主要区别如下:
Spring JDBC
与 JDBC 相关的操作更接近,提供了一系列简单的 JDBC 操作接口和基础的 DAO 模板,通过这些接口可以执行 SQL 操作、管理连接池和事务等。Spring Data JDBC
则提供了一种基于 ORM 框架的方式来处理 JDBC 数据库访问,通过使用 Spring Data JDBC,可以将实体类与数据库表进行映射,并提供自动生成 SQL 语句的能力。Spring JDBC
更加接近于传统的 JDBC 编程,需要手动编写 SQL 语句和参数设置等。Spring Data JDBC
则提供了更加面向对象的编程方式,可以通过实体类来操作数据库,使用注解和命名约定来自动生成 SQL 语句。Spring JDBC
支持主流的关系型数据库,例如 Oracle、MySQL、PostgreSQL 等,可以通过 JDBC 驱动来进行访问。Spring Data JDBC
支持的数据库种类更多,包括关系型数据库、文档型数据库、图形数据库等。可以通过使用不同的 Spring Data 模块来进行访问。Spring JDBC
更加灵活和轻量级,可以根据应用程序的需要进行定制和扩展,但是需要手动编写 SQL 语句和参数设置等,较为繁琐。Spring Data JDBC
则使用 ORM 的方式来操作数据库,提供了更高级的特性和性能优化,并且支持更多的数据库种类。补充(1):什么是 ORM 框架?
ORM(Object Relational Mapping,对象关系映射)框架是一种将对象模型和关系型数据库之间进行映射的技术。ORM 框架将应用程序中的对象与数据库中的表进行映射,使得应用程序可以通过操作对象来完成对数据库的访问,而不必直接使用 SQL 语句。常用的 ORM 框架包括:Hibernate、MyBatis、Spring Data JPA等。
补充(2):Spring 哪个版本开始支持 spring-data-jdbc?
Spring Data JDBC
是从 Spring Framework 4.0
版本开始引入的。只有 Spring Framework 4.0 及以上版本才支持 Spring Data JDBC。
spring-boot-starter-jdbc
和 spring-boot-starter-data-jdbc
都是与 JDBC 相关的 Starter,它们之间的区别如下:
spring-boot-starter-jdbc
:该 Starter 仅提供 JDBC 相关的基础依赖和配置,包括 HikariCP 连接池、Spring JDBC 模块和 Spring 的事务管理模块。通过引入该 Starter,可以轻松地配置和使用 JDBC。spring-boot-starter-data-jdbc
:该 Starter 在 spring-boot-starter-jdbc
的基础上增加了 Spring Data JDBC 模块,该模块提供了一种基于对象关系映射(ORM)的方式来处理 JDBC 数据库访问。通过使用 Spring Data JDBC,可以将实体类与数据库表进行映射,并提供自动生成 SQL 的能力。因此,如果应用程序只需要使用 JDBC 基础功能,例如简单的 SQL 操作、连接池管理和事务管理等,则可以选择 spring-boot-starter-jdbc
;如果需要使用 ORM 功能,并希望使用更高级的特性,例如乐观锁、软删除和嵌套查询等,则应选择 spring-boot-starter-data-jdbc
。
整理完毕,完结撒花~