百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

数据库驱动、Druid、MyBatis三者之间的关系

ccwgpt 2024-12-17 12:58 64 浏览 0 评论

你是否曾经感到困惑,当谈到数据库驱动、Druid和MyBatis时,他们的关系是如何串联起来的?是的,这些都是非常基础的概念,但是理顺它们的关系很多人就开始犯迷糊了。一些开发人员按照现成的开源框架模仿着开发,知道在哪些目录下写什么格式的文件,但是却不理解他们之间到底是什么关系,怎么串联起来的。今天我们就来简单的梳理一下。

数据库驱动:数据库驱动是一个软件组件,针对不同的数据库有不同的数据库驱动,比如MySQL驱动、Oracle驱动等,数据库驱动使Java应用程序能够与数据库进行通信。它负责建立与数据库服务器的连接、发送SQL查询,并处理服务器返回的结果。该驱动在Java应用程序与数据库之间充当桥梁,使它们能够无缝交互。如果没有数据库驱动,Java应用程序将无法与MySQL/Oracle等数据库进行交互。

我们常使用的数据库有Oracle、MySQL、SQL Server、DB2、PostgreSQL、SQLite等,小编最常使用的是Oracle和MySQL,这里就以Oracle和MySQL为例。

MySQL常使用5.x 和8.x两个版本,使用的MySQL驱动有 mysql-connector-java-5.1.47.jar、mysql-connector-java-8.0.22.jar。

<!-- mysql 驱动 -->

<dependency>

       <groupId>mysql</groupId>

       <artifactId>mysql-connector-java</artifactId>

       <version>8.0.22</version>

</dependency>

Oracle常使用12.2.x版本,ojdbc8-12.2.0.1.jar。

<!--oracle驱动-->

<dependency>

         <groupId>com.oracle.database.jdbc</groupId>

         <artifactId>ojdbc8</artifactId>

         <version>12.2.0.1</version>

</dependency>

Druid :Druid是阿里巴巴开源的JDBC(Java数据库连接)组件库。它提供高性能、可靠、高效的连接池解决方案,用于Java应用程序中的数据库连接管理。连接池帮助管理和重用数据库连接,减少为每个请求建立新连接的开销。除了连接池功能外,Druid还包括SQL解析、日志记录和监控等特性,因此在Java应用程序中管理数据库连接时,Druid是一个受欢迎的选择。

datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC&characterEncoding=utf-8
    username: root
    password: root
    # 数据源其它配置
    druid:
      #避免db单方面关闭连接,如mysql:show variables like '%timeout%',关注interactive_timeout和wait_timeout,默认8小时
      #常见错误:The last packet successfully received from the server was 46170 milliseconds ago
      #解决办法:1.miEvictableIdleTimeMillis < maxEvictableIdleTimeMillis
      #        2.maxEvictableIdleTimeMillis + timeBetweenEvictionRunsMillis < 8h
      initial-size: 5  #初始化连接池大小
      min-idle: 3     #最小连接数
      max-active: 20   #最大连接数
      max-wait: 60000  #最长等待时间
      #单位:ms,默认1min,两个作用
      #1.Destroy线程运行周期,每隔多久运行一次,配合min-evictable-idle-time-millis和max-evictable-idle-time-millis使用;
      #2.若testWhileIdle为true,申请连接时,若空闲时间大于time-between-eviction-runs-millis,则执行validation-query语句检测连接是否有效。
      time-between-eviction-runs-millis: 6000  #关闭空闲连接间隔(ms)
      # 单位:ms,连接保持空闲而不被驱逐的最小时间,默认30min
      #连接被destroy线程关闭条件:大于minIdle且空闲时间大于1800000
      min-evictable-idle-time-millis: 1800000
      # 单位:ms,连接保持空闲而不被驱逐的最大时间,默认7h
      #连接被destroy线程关闭条件:空闲时间只要大于25200000就关闭连接,不管池中连接数是否大于minIdle
      max-evictable-idle-time-millis: 25200000
      validation-query: SELECT 1               #数据库状态检测
      test-while-idle: true                    #判断连接是否可用
      test-on-borrow: false                    #在获得连接前是否要进行测试
      test-on-return: false                    #在归还连接前是否要进行测试
      pool-prepared-statements: false          #不缓存pstmt,oracle可以配true
      max-pool-prepared-statement-per-connection-size: 20 #配置pstmt缓存个数
      filters: stat,wall,slf4j
      #配置servlet,开启druid登录页和首页
      stat-view-servlet:
        enabled: true
        login-username: admin
        login-password: admin
        #监控页面访问路径
        url-pattern: /druid/*
        #是否允许重置,一般不允许
        reset-enable: false
        #白名单
        allow: 127.0.0.1
        #黑名单
        deny: 192.168.0.1

MyBatis:MyBatis是一个流行的Java持久层框架,简化了与数据库的交互。它提供了将Java对象映射到SQL语句及其反向操作的方法,从而减少了数据库访问所需的样板代码。MyBatis允许开发人员在XML或注解中编写SQL查询,并处理将结果映射到Java对象的工作。它被视为一个对象关系映射(ORM)工具,并且可以与多种数据库系统一起使用。

从上面可以看出,mysql驱动是使Java应用程序能够与MySQL数据库进行通信的关键组件,durid是一个数据库连接池库,提供高性能的连接管理功能,而mybatis是一个持久层框架,简化了Java应用程序与数据库之间的交互,可以通过XML或注解编写SQL查询。这三者共同组成了一个强大的栈,使Java开发人员能够高效地与MySQL数据库进行交互,并减少样板代码的编写。

数据库驱动、Druid、MyBatis三者之间的关系:

借用别人说的一个例子:把 MyBatis 比作是警察,Druid 比作武器库(库里存放了很多枪)),数据库驱动比作武器制造商(他们制造抢给武器库);当平民百姓遇到危险需要寻求帮助时,第一时间寻找警察,警察从武器库拿枪干活。也就是先访问 MyBatis,MyBatis 与 Druid通信,Druid 与 数据库驱动 通信,数据库驱动 与底层数据库交互。

相关推荐

十分钟让你学会LNMP架构负载均衡(impala负载均衡)

业务架构、应用架构、数据架构和技术架构一、几个基本概念1、pv值pv值(pageviews):页面的浏览量概念:一个网站的所有页面,在一天内,被浏览的总次数。(大型网站通常是上千万的级别)2、u...

AGV仓储机器人调度系统架构(agv物流机器人)

系统架构层次划分采用分层模块化设计,分为以下五层:1.1用户接口层功能:提供人机交互界面(Web/桌面端),支持任务下发、实时监控、数据可视化和报警管理。模块:任务管理面板:接收订单(如拣货、...

远程热部署在美团的落地实践(远程热点是什么意思)

Sonic是美团内部研发设计的一款用于热部署的IDEA插件,本文其实现原理及落地的一些技术细节。在阅读本文之前,建议大家先熟悉一下Spring源码、SpringMVC源码、SpringBoot...

springboot搭建xxl-job(分布式任务调度系统)

一、部署xxl-job服务端下载xxl-job源码:https://gitee.com/xuxueli0323/xxl-job二、导入项目、创建xxl_job数据库、修改配置文件为自己的数据库三、启动...

大模型:使用vLLM和Ray分布式部署推理应用

一、vLLM:面向大模型的高效推理框架1.核心特点专为推理优化:专注于大模型(如GPT-3、LLaMA)的高吞吐量、低延迟推理。关键技术:PagedAttention:类似操作系统内存分页管理,将K...

国产开源之光【分布式工作流调度系统】:DolphinScheduler

DolphinScheduler是一个开源的分布式工作流调度系统,旨在帮助用户以可靠、高效和可扩展的方式管理和调度大规模的数据处理工作流。它支持以图形化方式定义和管理工作流,提供了丰富的调度功能和监控...

简单可靠高效的分布式任务队列系统

#记录我的2024#大家好,又见面了,我是GitHub精选君!背景介绍在系统访问量逐渐增大,高并发、分布式系统成为了企业技术架构升级的必由之路。在这样的背景下,异步任务队列扮演着至关重要的角色,...

虚拟服务器之间如何分布式运行?(虚拟服务器部署)

  在云计算和虚拟化技术快速发展的今天,传统“单机单任务”的服务器架构早已难以满足现代业务对高并发、高可用、弹性伸缩和容错容灾的严苛要求。分布式系统应运而生,并成为支撑各类互联网平台、企业信息系统和A...

一文掌握 XXL-Job 的 6 大核心组件

XXL-Job是一个分布式任务调度平台,其核心组件主要包括以下部分,各组件相互协作实现高效的任务调度与管理:1.调度注册中心(RegistryCenter)作用:负责管理调度器(Schedule...

京东大佬问我,SpringBoot中如何做延迟队列?单机与分布式如何做?

京东大佬问我,SpringBoot中如何做延迟队列?单机如何做?分布式如何做呢?并给出案例与代码分析。嗯,用户问的是在SpringBoot中如何实现延迟队列,单机和分布式环境下分别怎么做。这个问题其实...

企业级项目组件选型(一)分布式任务调度平台

官网地址:https://www.xuxueli.com/xxl-job/能力介绍架构图安全性为提升系统安全性,调度中心和执行器进行安全性校验,双方AccessToken匹配才允许通讯;调度中心和执...

python多进程的分布式任务调度应用场景及示例

多进程的分布式任务调度可以应用于以下场景:分布式爬虫:importmultiprocessingimportrequestsdefcrawl(url):response=re...

SpringBoot整合ElasticJob实现分布式任务调度

介绍ElasticJob是面向互联网生态和海量任务的分布式调度解决方案,由两个相互独立的子项目ElasticJob-Lite和ElasticJob-Cloud组成。它通过弹性调度、资源管控、...

分布式可视化 DAG 任务调度系统 Taier 的整体流程分析

Taier作为袋鼠云的开源项目之一,是一个分布式可视化的DAG任务调度系统。旨在降低ETL开发成本,提高大数据平台稳定性,让大数据开发人员可以在Taier直接进行业务逻辑的开发,而不用关...

SpringBoot任务调度:@Scheduled与TaskExecutor全面解析

一、任务调度基础概念1.1什么是任务调度任务调度是指按照预定的时间计划或特定条件自动执行任务的过程。在现代应用开发中,任务调度扮演着至关重要的角色,它使得开发者能够自动化处理周期性任务、定时任务和异...

取消回复欢迎 发表评论: