Spring(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.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/

文本比对结果:

在这里插入图片描述

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

  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 连接池、Spring JDBC 模块和 Spring 的事务管理模块。通过引入该 Starter,可以轻松地配置和使用 JDBC。
  2. 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

整理完毕,完结撒花~ 🌻

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不愿放下技术的小赵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值