跳至主要內容

3、spring-boot-starter-jdbc 和 spring-boot-starter-data-jdbc 区别

安图新大约 4 分钟

3、spring-boot-starter-jdbc 和 spring-boot-starter-data-jdbc 区别

一、pom.xml 文件比对

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.xmlopen in new window

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.xmlopen in new window

文本比对地址:http://study.100xgj.com/textdiff/open in new window

文本比对结果:

 
 

我们可以看到,主要存在三点不同:

1、 pom.xml 所在项目的基础信息不同,这点是肯定的,每个项目名一般都不一样;
2、 spring-boot-starter-data-jdbc底层依赖于spring-boot-starter-jdbc
3、 结合第 2 点和第 3 点的不同,spring-boot-starter-data-jdbc相比spring-boot-starter-jdbc增加了spring-data-jdbc依赖;

下面我们就一起探讨一下:为什么有了 spring-jdbc 后还需要增加 spring-data-jdbc 依赖,二者有什么不同?

二、spring-jdbc 和 spring-data-jdbc 区别

Spring JDBC 和 Spring Data JDBC 都是 Spring Framework 中与 JDBC 相关的模块,它们之间的主要区别如下:

1、 功能定位:

  • Spring JDBC 与 JDBC 相关的操作更接近,提供了一系列简单的 JDBC 操作接口和基础的 DAO 模板,通过这些接口可以执行 SQL 操作、管理连接池和事务等。

  • Spring Data JDBC 则提供了一种基于 ORM 框架的方式来处理 JDBC 数据库访问,通过使用 Spring Data JDBC,可以将实体类与数据库表进行映射,并提供自动生成 SQL 语句的能力。 2、 编程方式:

  • Spring JDBC 更加接近于传统的 JDBC 编程,需要手动编写 SQL 语句和参数设置等。

  • Spring Data JDBC 则提供了更加面向对象的编程方式,可以通过实体类来操作数据库,使用注解和命名约定来自动生成 SQL 语句。 3、 数据库支持:

  • Spring JDBC 支持主流的关系型数据库,例如 Oracle、MySQL、PostgreSQL 等,可以通过 JDBC 驱动来进行访问。

  • Spring Data JDBC 支持的数据库种类更多,包括关系型数据库、文档型数据库、图形数据库等。可以通过使用不同的 Spring Data 模块来进行访问。 4、 性能和可扩展性:

  • 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 区别

spring-boot-starter-jdbcspring-boot-starter-data-jdbc 都是与 JDBC 相关的 Starter,它们之间的区别如下:

1、 spring-boot-starter-jdbc:该 Starter 仅提供 JDBC 相关的基础依赖和配置,包括 HikariCP 连接池、SpringJDBC 模块和 Spring 的事务管理模块通过引入该 Starter,可以轻松地配置和使用 JDBC;
2、 spring-boot-starter-data-jdbc:该 Starter 在spring-boot-starter-jdbc的基础上增加了 SpringDataJDBC 模块,该模块提供了一种基于对象关系映射(ORM)的方式来处理 JDBC 数据库访问通过使用 SpringDataJDBC,可以将实体类与数据库表进行映射,并提供自动生成 SQL 的能力;

因此,如果应用程序只需要使用 JDBC 基础功能,例如简单的 SQL 操作、连接池管理和事务管理等,则可以选择 spring-boot-starter-jdbc;如果需要使用 ORM 功能,并希望使用更高级的特性,例如乐观锁、软删除和嵌套查询等,则应选择 spring-boot-starter-data-jdbc

整理完毕,完结撒花~ 🌻