数据源和连接池的关系

有关Datasource 和 Connection Pool(数据源和连接池) 1.首先我先简单介绍一下数据源与连接池:(1)数据源(Data Source)是提供某种所需要数据的器件或原始媒体。JDBC中提供了javax.sql.DataSource接口,负责建立与数据库的连接。 DataSource对象可以由Web服务器提供,前提是需要在服务器配置DataSource(包括连接池)(2)而连接池的概念就像是一个水池,装载的东西就是一个一个的连接通道。以前我们每次使用数据库... 阅读详情

Java JDBC 提供了 java.sql.Driver、java.sql.DriverManager、javax.sql.DataSource 三个接口,另外还有不同类型的连接池技术,它们之间的关系是什么?下面就简单说一下。

java.sql.Driver:是 Java 提供的一个用来连接数据库的驱动接口,具体实现由各数据库厂商完成。常见的实现有:Mysql 的实现 com.mysql.jdbc.Driver。是真正获取数据库连接 Connection 的接口(类) 。

package java.sql;

public interface Driver {
    
        Connection connect(String url, java.util.Properties info) throws SQLException;
        
        ...
} 

java.sql.DriverManager:是 Java 提供的数据库驱动管理器,用来管理 java.sql.Driver 接口的实现。一般都是通过调用该接口的 getConnection() 或者其重载的方法来获取数据库连接。其底层也是通过调用 java.sql.Driver 接口的 connect() 方法来获取连接。

package java.sql;

public class DriverManager {
    
    //用来存放所有注册的驱动集合
    private final static CopyOnWriteArrayList<DriverInfo> registeredDrivers = new CopyOnWriteArrayList<>();
     
     //  Worker method called by the public getConnection() methods.
    private static Connection getConnection(
        String url, java.util.Properties info, Class<?> caller) throws SQLException {
        ...

        for(DriverInfo aDriver : registeredDrivers) {
            // If the caller does not have permission to load the driver then
            // skip it.
            if(isDriverAllowed(aDriver.driver, callerCL)) {
                try {
                    println("    trying " + aDriver.driver.getClass().getName());
                    Connection con = aDriver.driver.connect(url, info);
                    if (con != null) {
                        // Success!
                        println("getConnection returning " + aDriver.driver.getClass().getName());
                        return (con);
                    }
                } catch (SQLException ex) {
                    if (reason == null) {
                        reason = ex;
                    }
                }
            } else {
                println("    skipping: " + aDriver.getClass().getName());
            }
        }
        ...
    }
    ...
}

javax.sql.DataSource:通常被称作数据源,也可以获取数据库连接,是用来代替 javax.sql.DriverManager 接口的。它包含连接池和连接池管理两个部分,可以从连接池中获取连接。

  • DriverManager用于管理驱动程序并且提供数据库的直连,频繁的创建和消耗连接增加系统大量开销,并且将数据库连接直接暴露。
  • 数据源的概念就是为了在应用程序和DriverManager创建的数据库直接连接之间插入一个中间层,借助于中间层,应用程序与数据库的连接两者之间完成了解耦,也能够对数据库的真实连接进行隐藏;一旦解耦,通过中间层间接调用,类似代理模式,就可以添加更多的服务---连接池以及分布式事务。
package javax.sql;
...
public interface DataSource  extends CommonDataSource, Wrapper {
    
      Connection getConnection() throws SQLException;
      
      Connection getConnection(String username, String password)  throws SQLException;

}

连接池:就是一个存放数据库连接的容器(集合)。它对JDBC的API 进行了包装,获取连接时可以从池中获取,使用完成后不是真正的 close,而是放回池中。常见的连接池技术有:DBCP ,C3P0 ,druid、HikariCP。

 

参考地址:

Data Source与数据库连接池简介 JDBC简介(八):https://www.cnblogs.com/noteless/p/10319296.html#

数据源和连接池的区别:http://www.doc88.com/p-7983312769263.html

斗罗大陆叙事体系与战斗系统设计解析 在文学创作与游戏设计中,世界观构建和战斗系统设计是两大核心技术要素。世界观作为故事发生的背景框架,需要融合东西方文化元素并建立量化标准,如《斗罗大陆》中武魂觉醒与魂环等级体系。战斗系统则需突破简单数值对抗,发展出武魂特性、魂技组合与环境互动的三维体系,其中魂导器技术的引入展现了科技与魔法的创新融合。这些设计原理在RPG游戏开发、网络文学创作等领域具有广泛应用价值,特别是对需要长期运营的IP作品,完善的系统设定能有效支撑剧情延展与商业化开发。本文以现象级作品为例,剖析其武魂拟态理论和魂师工业化构思如何成就经典 阅读详情

相关推荐

告别密码本!用Windows NPS给华为/华三交换机做Radius认证,SSH登录更安全

本文详细介绍了如何利用Windows NPS实现华为/华三交换机的Radius认证,提升SSH登录安全性。通过集中化管理、精细化控制和完整审计追踪,企业可告别传统密码本,大幅提升网络设备管理效率。文章包含NPS服务部署指南、交换机配置详解及调试技巧,助力企业构建安全高效的统一认证体系。

weixin_42549723的博客 419

数据源与连接池关系

而我个人认为这两者有不同的: (1)数据源是一种数据库对编程提供的一个接口,每个数据源对应一个数据库。 (2)连接池只是存放数据库连接对象的一个缓冲池,需要数据连接的时候从缓冲池中取就行了。 (3)连接池可以管理数据源。 用TCP来连接你的应用程序与数据库是一件昂贵的事情(很费时的事情),开发者可以通过用连接池来反复的使用数据库的连接。比起每次请求都用TCP来连一次数据库,连接

indieinside的专栏 1万+

手把手教你用TLP350驱动IGBT:光耦隔离驱动电路完整设计教程

本文详细介绍了如何使用TLP350光耦隔离驱动电路设计IGBT驱动方案。从TLP350芯片特性分析到驱动电路架构设计,包括信号调理、自举电源和栅极控制网络,再到PCB布局优化和保护电路设计,提供了完整的实战指南。通过实测波形分析和故障排查,帮助工程师快速掌握IGBT驱动电路的设计要点和进阶技巧。

weixin_30566063的博客 822

连接池、数据源、JNDI三者间的关系及用法

  连接池: 连接池是由容器(比如Tomcat)提供的,用来管理池中的连接对象。 连接池自动分配连接对象并对闲置的连接进行回收。 连接池中的连接对象是由数据源(DataSource)创建的。 连接池(Connection Pool)用来管理连接(Connection)对象。   数据源: 数据源(DataSource)用来连接数据库,创建连接(Connection)对象。  java.sql...

jcpp9527的博客 4591

<蓝桥杯软件赛>零基础备赛20周--第16周--GCD和LCM

gcd,lcm

罗勇军的博客 7602

THUCNews新闻文本分类-tfidf+sklearn

本文使用的是和鲸社区现有数据集,代码也在和鲸社区公开,fork之后可以直接运行。 本文中所用的数据集清华NLP组提供的THUCNews新闻文本分类数据集的一个子集(原始的数据集大约74万篇文档,训练起来需要花较长的时间)。 本次训练使用了其中的体育, 财经, 房产, 家居, 教育, 科技, 时尚, 时政, 游戏, 娱乐10个分类,每个分类6500条,总共65000条新闻数据。项目在和鲸社区的平台上跑的,数据集直接引用了和鲸的数据集,每个分类6500条,总共65000条新闻数据。 数据集划分如下: cnews

wmq104的博客 4590

什么是数据源,以及它和连接池的关系

数据源:ODBC给每个被访问的数据源指定唯一的数据源名(Data Source Name, DSN)。在连接中,用数据源名来代表用户名、服务、器名、所连接的数据库名等。最终用户无须知道数据库管理系统或其他数据管理软件、网络以及有关ODBC驱动程序的细节,数据源对最终用户是透明的。 简单说就是数据源是数据来源的一系列说明(比如连接了什么数据库,你的名字叫什么,你的密码是什么等)。因为是数据来源的具体说明,所以每一个数据源必须对应一个具体的数据库。 例如: 某个学校在SQL Server上创了学校人事数据库

qq_42883292的博客 2217

WKWebView 白屏问题,WKWebView request body丢失问题

1,WKWebView 白屏问题 WKWebView 自诩拥有更快的加载速度,更低的内存占用,但实际上 WKWebView 是一个多进程组件,Network Loading 以及 UI Rendering 在其它进程中执行。初次适配 WKWebView 的时候,我们也惊讶于打开 WKWebView 后,App 进程内存消耗反而大幅下降,但是仔细观察会发现,Other Process 的内存占用会...

weixin_37543822的博客 735

5张图让你彻底理清数据库 ,数据源和连接池的关系

k1968315915的博客 624

ADK 第一篇 Google Agent Development Kit 简介

是一个灵活且模块化的框架,专为开发和部署AI智能体而设计。虽然ADK针对Gemini和Google生态系统进行了优化,但它与模型无关、与部署环境无关,并兼容其他框架。ADK的核心理念是让智能体开发更接近传统软件开发模式,从而帮助开发者更轻松地构建、部署和编排智能体架构——无论是处理简单任务,还是管理复杂工作流。:利用预置工具、自定义函数、OpenAPI规范或集成现有工具,赋予智能体多样化能力,实现与谷歌生态系统的深度整合。

2501_90353350的博客 3042

TensorFlow GPU版本安装步骤-Windows系统

本文由在Windows下安装TensorFlow GPU版本教程-优快云等整理得到。 目录 1、确认显卡是否支持CUDA 1.1 查看显卡信息 打开“设备管理器”,查看显卡信息,如下图所示: 由上图知,本电脑的显卡为NVIDIA Quadro P400. 1.2 查看支持CUDA的显卡 网址:https://developer.nvidia.com/cuda-gpus 经查询可知,该显卡支持CUDA,如下图所示: 2、安装CUDA 2.1 下载CUDA 网址:https://developer.nvi

x_lingyun的专栏 765

数据库、数据源、数据库连接、数据库连接池的关系

数据库、数据源、数据库连接、数据库连接池的关系 数据库 数据库就是包含了很多数据的容器,当然这些数据可能存在不同的小容器(表)里面,总之,如果用水来形容数据,那么数据可就是水库。 数据源 数据源是连接到数据库的一类路径,它包含了访问数据库的信息(地址、用户名、密码)。数据源就像是排水管道。 数据库连接 数据库连接是根据数据源产生的实际连接上数据库的路径,数据库连接就像是管道里面的水管,这些水管都按...

David的博客 3129

告别传统RAG的痛点!Agent Skills让知识库检索更智能(本地知识库搭建新思路:用Agent Skills实现渐进式检索)

传统RAG在知识库检索中存在文档结构丢失、Token消耗大等问题 📚 Agent Skills通过分层索引、渐进式检索等设计,实现了更智能的本地知识库检索方案 🤖 本文详细介绍了Agent Skills的核心设计理念、与传统RAG的对比以及实践建议,帮助你搭建高效的知识库系统 ✅

XiaoqiangClub的博客 692

加速,从数据源到连接池…

文章目录一、前言二、数据源2.1 MyBatis三种数据源2.2 Mybatis初始化时创建数据源工厂和数据源2.3 DataSource延迟到执行SQL语句的时候才创建Connection对象三、连接池3.1 不使用连接池:UnpooledDataSource时序图3.2 不使用连接池:每次新建一个Connection代价太大3.3 使用连接池:PooledDataSource类减少创建Connection的消耗3.3.1 idleConnections和activeConnections3.3.2 使用

毛毛的专栏 543

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

@RequestController—数据源与连接池

目录一、@RequestController————类@Controller————类@ResponseBody————类/方法@RequestMapping————方法(必需!!)二、数据源与连接池JNDI数据源DataSource连接池连接池分类1. DBCP2. C3P03.Druid总结 一、@RequestController————类 继承自@Controller 向页面发送JSON格式信息 相当于@Controller+@ResponseBody————在页面显示数据 @Contro

qq_45673367的博客 3221

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

mybatis配置中的数据源datasource是什么?

一言以蔽之: 数据源是一个实现了datasource接口的类,它实现了连接和连接池的功能。 结论: 因此,如果你想用druid连接池,那你只能用druid的数据源new DruidDataSource();如果你想用hikari的连接池,那你只能用hikari的数据源DataSourceBuilder.create().build()(springboot默认数据源)。 你不可能使用hikari的...

welcome to daijiguo's blog 3462

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

SpringBoot多数据源配置

说SpringBoot的多数据源配置之前,我们先了解下DataSource。 在java世界里操作数据库有很多方式,在众多方式中除了JDBC外还有DataSource对象。 DataSource可以看作数据源,它封装了数据库参数,连接数据库,程序中操作DataSource对象即可对数据库进行增删改查操作。 不同方式中使用的DataSource对象不同。列举如下: dbcp框架中的DataSource类是:org.apache...

有个疙叫瘩儿的博客 9569

SpringBoot基础概念介绍-数据源与数据库连接池

数据库连接池(Database Connection Pooling)是一种用于高效管理和复用数据库连接的技术,旨在解决传统 JDBC 操作中频繁创建和销毁连接所带来的资源浪费和性能开销问题。在传统的数据库操作中,每次访问数据库都需要加载驱动、建立连接、执行操作和关闭连接,尽管在低频访问场景下,这种方式影响较小,但在高频数据库访问中,频繁的连接创建和销毁会消耗大量的 CPU、内存和网络资源,同时增加操作的延迟,严重时甚至会导致系统崩溃。数据库连接池通过池化技术。

神马都会亿点点的毛毛张 1045

SpringBoot配置多个数据源

springboot配置多个数据源

xudegang123的博客 2066

Tomcat 中数据源的配置和使用

Tomcat 中数据源的配置和使用  一、数据源简介: ************************************************************************************        在Java语言中,DataSource对象就是一个代表数据源实体的对象。一个数据源就是一个用来存储数据的工具,它可以是复杂的大型企业级数据库,

Yao_Qinwei's Blog 815

数据源相关概念

内容提要 数据源概念 数据库连接池  jndi概念 数据源与连接池关系 数据源与jndi关系 jdbc基础 1.什么是数据源?答:数据源定义的是连接到实际数据库的一条路径而已,数据源

snow2076的专栏 2239

Mysql 连接池session_Application, JDBC, 数据库连接池, Session, 数据库的关系

RT,这几个东东已经困扰我很长一段时间了。。。这次争取把她们理清楚了!参考资料:1. 数据源与连接池按自己理解,数据源有时指数据库/存储数据的文件(数据源头),有时也指数据库的引用/连接数据库的工具(毕竟其中含有url,username,pwd等参数)而连接池则是指管理数据库连接的地方。按照目前常用的方式,数据源常作为联连接数据库的工具,而连接池则随着数据源的创建而一起配置完成。比如常用的Data...

weixin_30418751的博客 474

数据库与数据源的区别

数据库与数据源的区别 2018年02月27日 14:44:33 LizhenBlog 阅读数 9180 数据库与数据源的区别 jdbc基础 1.什么是数据源? 答:数据源定义的是连接到实际数据库的一条路径而已,数据源中并无真正的数据,它仅仅记录的是你连接到哪个数据库,以及如何连接的,如odbc数据源。也就是说数据源仅仅是数据库的连接名称,一个数据库可以有多个数据源连接。...

f45056231p的博客 496

mysql连接池有几种_连接池有那几种 分别有什么区别

展开全部在讲解连接池之前,先弄懂以下几个概念:数据源:Data source , 读取数据的来源,也就是说你的系统要读取的数据去什么地方找636f70793231313335323631343130323136353331333361326330(存放数据的地方)!JDBC:全称为Java DataBase Connectivity standard, 它是一个面向对象的应用程序接口(API), ...

weixin_42395740的博客 684
上一篇: 深入理解JDBC
下一篇: VirtualBox+Vagrant安装CentOS7
ProgrammingWay
博客等级 码龄9年 58粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值