数据库驱动、Druid、MyBatis三者之间的关系
ccwgpt 2024-12-17 12:58 74 浏览 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 与 数据库驱动 通信,数据库驱动 与底层数据库交互。
相关推荐
- VUE3前端开发入门系列教程二:使用iView框架辅助开发
-
1、安装iView新框架,支持VUE3npminstallview-ui-plus2、编辑src/main.js,添加以下内容,导入js和css到项目importViewUIPlusfrom...
- 万能前端框架uni app初探03:底部导航开发
-
前言本节我们使用uniapp的底部导航功能,点击不同tab会显示不同页面,这个功能在实际项目开发中几乎是必备的。一、基础知识1.tabBar如果应用是一个多tab应用,可以通过tabBar配...
- Rust Web 开发框架,前端你可以选择哪个?
-
Rust构建一切。在如今流行的语言中,Rust可谓是将构建和高效作为自己优美的身姿在大众视野中脱颖而出。它是一门赋予每个人构建可靠且高效软件能力的语言。它有什么特性呢?高性能。Rust速度惊人且内...
- 连载:前端开发中纠结的Javascript框架(上)
-
如今,前端开发有着许许多多的框架和库。其中一些好用,一些却不尽人意。通常我们会习惯性运用某一概念,模块或句法。事实上,并没有什么万能工具。这篇文章是关于未来框架的发展趋势——那就是没有框架!我从以下几...
- 前端开发框架的演进架构:提升用户体验和开发效率
-
前端开发框架是现代Web应用开发的重要工具,它不仅可以帮助开发者构建复杂的用户界面,还能够提升用户体验和开发效率。随着Web技术的不断发展,前端开发框架也在不断演进,为开发者提供了更丰富、更高效的工具...
- Google应用Mesh-TensorFlow框架,让CNN也能处理超高分辨率图像
-
为了要处理超高分辨率医疗图像数据,Google开发了一种空间数据分区(SpatialPartition)技术,在不牺牲图像分辨率的条件下,分析超高分辨率图像。Google使用Mesh-TensorF...
- 大模型安全挑战加剧:框架层漏洞成新靶心
-
近日,360数字安全集团发布了一份关于大模型安全漏洞的报告,揭示了当前大模型及围绕其构建的框架和应用中存在的严重安全问题。报告显示,360近期研究发现了近40个大模型相关的安全漏洞,其中既包括二进制内...
- Keras 3.0正式发布:可用于TensorFlow、JAX和PyTorch
-
机器之心报道编辑:陈萍经过5个月的更新迭代,Keras3.0终于来了。「大新闻:我们刚刚发布了Keras3.0版本!」Keras之父FrancoisChollet在X上激动的...
- TensorFlow和Keras入门必读教程(tensorflow与keras版本对应)
-
导读:本文对TensorFlow的框架和基本示例进行简要介绍。作者:本杰明·普朗什(BenjaminPlanche)艾略特·安德烈斯(EliotAndres)来源:华章科技01TensorFlo...
- 谷歌官方回应“TensorFlow遭弃”:还在投资开发,将与JAX并肩作战
-
鱼羊发自凹非寺量子位|公众号QbitAI终于,谷歌出面回应“TensorFlow遭弃”传闻:我们将继续致力于将TensorFlow打造为一流机器学习平台,与JAX并肩推动机器学习研究。这段时...
- 2025 年的PHP :现代 Web 开发的强大引擎
-
程序员还在吐槽PHP过时?2025年的PHP8.4直接封神了。看看最近更新的属性钩子、强类型系统,加上Laravel这些框架,老语言早就脱胎换骨。十年前说PHP弱类型容易崩代码的,现在脸疼不?联合类...
- 前端内卷终结者?htmx如何让开发者告别200行JS只做一个按钮
-
当你用React写一个点赞按钮需要引入3个状态管理库、编写80行JSX和120行钩子函数时,htmx只需要一行HTML:<buttonhx-post="/like"hx-sw...
- NativePHP桌面版V1.0正式发布(元气桌面电脑版下载)
-
导读:各位小伙伴,使用PHP构建桌面级系统的利器,NativePHP来了。概述NativePHP是一个用于使用PHP构建桌面应用的框架。它允许PHP开发人员使用熟悉的工具和技术创建跨平台的原生应用...
- PHP Laravel框架底层机制(php基本框架)
-
当然可以,Laravel是最受欢迎的PHP框架之一,以优雅的语法和丰富的生态而闻名。尽管开发体验非常“高端”,它的底层其实是由一系列结构清晰、职责分明的组件构成的。下面我从整体架构、核心流程、...
- PHP框架之Laravel框架教程:2. 控制器、路由、视图简单介绍
-
2.控制器、路由、视图简单介绍我们先建立控制器,目录是:app/Http/Controllers,新建控制器Ding.php,代码如下:Ding.php:<?phpnamespaceA...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- VUE3前端开发入门系列教程二:使用iView框架辅助开发
- 万能前端框架uni app初探03:底部导航开发
- Rust Web 开发框架,前端你可以选择哪个?
- 连载:前端开发中纠结的Javascript框架(上)
- 前端开发框架的演进架构:提升用户体验和开发效率
- Google应用Mesh-TensorFlow框架,让CNN也能处理超高分辨率图像
- 大模型安全挑战加剧:框架层漏洞成新靶心
- Keras 3.0正式发布:可用于TensorFlow、JAX和PyTorch
- TensorFlow和Keras入门必读教程(tensorflow与keras版本对应)
- 谷歌官方回应“TensorFlow遭弃”:还在投资开发,将与JAX并肩作战
- 标签列表
-
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- mfc框架 (52)
- abb框架断路器 (48)
- beego框架 (52)
- java框架spring (58)
- grpc框架 (65)
- tornado框架 (48)
- 前端框架bootstrap (54)
- orm框架有哪些 (51)
- ppt框架 (48)
- 内联框架 (52)
- cad怎么画框架 (58)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)