JDBC、datasource、数据库驱动、持久层框架之间的区别

1、jdbc

Java Database Connectivity(JDBC)是Java平台下的一个标准API,它定义了一组用于连接各种数据库系统、执行SQL语句和处理结果集的接口和类。使用JDBC API,开发人员可以编写能够访问不同数据库系统的应用程序,而无需关注底层不同的数据库细节。

其相关内容 在java.sql

2、数据库驱动

其更像是对应java jdbc 标准的实现

JDBC驱动是一种实现了JDBC API的软件,它能够让Java应用程序以标准的方式访问不同的数据库;每个数据库都有其自己的JDBC驱动,这些驱动可以连接到相应的数据库,并提供了必要的方法来执行数据库操作

需要下载并安装 MySQL Connector/J 驱动程序。您可以从官方网站 MySQL :: Download Connector/J 下载最新版

复制代码
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.23</version>
</dependency>

3、数据源

数据源技术是Java操作数据库的一个很关键技术,流行的持久化框架都离不开数据源的应用。

数据源提供了一种 简单获取数据库连接的方式,并能在内部通过一个 池的机制来复用数据库连接,这样就大大减少创建数据库连接的次数,提高了系统性能。

需要数据源的原因:由于使用jdbc建立连接和销毁太过于浪费资源,因此需要一套高效的与数据库建立连接的组件,那就是数据源,数据源可以创建连接池。

常见的有DBCP、C3P0、druid、hikariCP等等

复制代码
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.6</version>
        </dependency>

4、持久层框架

对象-关系映射(Object-Relational Mapping,简称ORM),面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系 数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。 内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。

对象-关系映射解释:

A . 简单:ORM以最基本的形式建模数据。比如ORM会将MySQL的一张表映射成一个Java类(模型),表的字段就是这个类的成员变量

B . 精确:ORM使所有的mysql数据表都按照统一的标准精确地映射成java类,使系统在代码层面保持准确统一

C . 易懂:ORM使数据库结构文档化。比如MySQL数据库就被ORM转换为了java程序员可以读懂的java类,java程序员可以只把注意力放在他擅长的java层面(当然能够熟练掌握MySQL更好)

D. 易用:ORM包含对持久类对象进行CRUD操作的API,例如create(), update(), save(), load(), find(), find_all(), where()等,也就是讲sql查询全部封装成了编程语言中的函数,通过函数的链式组合生成最终的SQL语句。通过这种封装避免了不规范、冗余、风格不统一的SQL语句,可以避免很多人为Bug,方便编码风格的统一和后期维护。

Mybatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层**(半)ORM**

复制代码
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>${project.version}</version>
</dependency>

mybaits对应的springboot 和mybatis版本

参考:

JDBC、datasource、连接池、数据库驱动、持久层框架之间的区别

全面了解Java连接MySQL的基础知识,快速实现数据交互

jdbc数据源跟连接池的关系问题?

Java中驱动是干什么用的

相关推荐
倔强的石头_1 小时前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
唐青枫1 小时前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
一个做软件开发的牛马3 小时前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
用户3721574261353 小时前
Java 处理 PDF 图片:提取 PDF 中的图片,并压缩 PDF 图片体积
java
用户3721574261353 小时前
Java 打印 Word 文档:从基础打印到高级设置
java
冬奇Lab14 小时前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
用户35218024547518 小时前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程
东坡白菜21 小时前
破局全栈:一个前端开发的Java入门实战记录(1)
java·全栈
唐青枫1 天前
Java Tomcat 实战指南:从 Servlet 容器到 Spring Boot 部署
java
wsaaaqqq1 天前
roudan:自由选择实体、灵活操作数据、快速写入数据库的 Java 框架
java