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中驱动是干什么用的

相关推荐
云知谷12 小时前
【C++基本功】C++适合做什么,哪些领域适合哪些领域不适合?
c语言·开发语言·c++·人工智能·团队开发
冉冰学姐13 小时前
SSM足球爱好者服务平台i387z(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·ssm 框架·足球爱好者服务平台
l1t13 小时前
DeepSeek辅助利用搬移底层xml实现快速编辑xlsx文件的python程序
xml·开发语言·python·xlsx
大飞记Python13 小时前
部门管理|“编辑部门”功能实现(Django5零基础Web平台)
前端·数据库·python·django
C_Liu_14 小时前
C++:list
开发语言·c++
my rainy days14 小时前
C++:友元
开发语言·c++·算法
小梁努力敲代码14 小时前
java数据结构--List的介绍
java·开发语言·数据结构
清风66666614 小时前
基于单片机的智能收银机模拟系统设计
数据库·单片机·毕业设计·nosql·课程设计
摸鱼的老谭15 小时前
构建Agent该选Python还是Java ?
java·python·agent
资深低代码开发平台专家15 小时前
PostgreSQL 18 发布
数据库·postgresql