JDBC入门技术:如何使用连接池技术连接数据库

JavaWeb:JDBC之数据库连接池 系列阅读 JavaWeb:用JDBC操作数据库 JavaWeb:JDBC之事务 JavaWeb:JDBC之数据库连接池 池参数(所有池参数都有默认值) 初始大小:10个 最小空闲连接数:3个 增量:一次创建的最小单位(5个) 最大空闲连接数:12个 最大连接数:20个 最大的等待时间:1000毫秒 四大连接参数连接池也是使用四大连接参数来完成创建连接对象!实现的接口连接池必须实现:javax.sql 阅读详情
工具:Myeclipse(eclipse)
知识点:线程(Thread)/连接池概念/IO流操作(Properties)
jar包
commons-collections4-4.0.jar
commons-dbcp-1.4.jar
commons-pool-1.6.jar
Oracle 11g 11.2.0.1.0 JDBC_ojdbc6.jar

步骤:
1
创建:
数据库连接池对象BasciDataSource(不初始化)
线程对象ThreaLocal对象(不初始化)
配置文件对象Properties对象<>
配置文件路径对象InputStream对象<>

2.
获取
初始化数据库连接池对象
使用连接池对象获取配置文件中的信息
(如果要将字符串转换为int类型.使用包装对象)

3.初始化
初始化线程对象

4.创建连接方法
覆盖Connection中的getConnection()函数
注意:使用数据库连接池对象获取,
使用线程对象进行保存连接对象

覆盖close()函数:
注意:
使用线程获取的对象将对象来释放资源.
这里将资源释放并不是将Connection对象连接关闭,
而是将连接归还给连接池,给接下来的线程使用

比如:此时使用某一种东西.用完之后就会放回原处,给下一个人使用,
这两可以重复使用减少数据库的开销

为何要使用数据库连接池?
数据库连接的建立及关闭资源消耗巨大
传统数据访问方式:一次数据库访问对应一个物理连接.
每次操作数据库都要打开,
关闭物理连接,系统性能严重受损

解决方案:
系统初始运行时,主动建立足够的连接,组成一个池.
每次应用程序请求数据连接时无需重新打开连接,
而是从池中取出连接,使用完后,不在关闭而是归还..

连接池中的使用规则:
应用启动时.创建初始化数目的连接..
当申请时无连接可用或者达到指定的最小连接数,
按增量参数值创建新的连接

为确保连接池中最小连接数的策略
动态检查:定时检查连接池,一旦发现数量小于最小连接数.
则补充相应的新连接,保证连接池正常运转
静态检查
空闲连接不足时,系统才检测是否达到最小连接数
按需分配,用过归还,超时归还


相当于:
客户端和数据库中间有一个连接池(抽象概念)

相当于生活中接口转换器一样

package com.csdn.jdbcdemo.date2017_11_12;


//如何使用连接池技术连接数据库
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;


import org.apache.commons.dbcp.BasicDataSource;


public class BasicDataSourceDemo {
	//创建连接池对象
	private static BasicDataSource bs;
	
	//创建多线程对象
	private static ThreadLocal<Connection> td ;
	
	static{
		try{
		//配置对象
		Properties properties = new Properties();
		
		//配置文件路径
		InputStream is 
			= BasicDataSourceDemo.
				class.getClassLoader().
					getResourceAsStream(
						"com/csdn/jdbcdemo/date2017_11_13/propertis.txt");
		
		//初始化连接池
		properties.load(is);
		is.close();
		
		bs = new BasicDataSource();
		
		//驱动器
		//Class.forName("oracle.jdbc.driver.OracleDriver")
		bs.setDriverClassName(
				properties.getProperty("driver"));
		
		//数据库路径
		bs.setUrl(properties.
				getProperty("url"));
		
		//数据库用户名
		bs.setUsername(
			properties.getProperty("username"));
		
		//数据库的密码
		bs.setPassword(properties.getProperty("password"));
		
		//线程初始化数量
		bs.setInitialSize(
			Integer.parseInt(
				properties.getProperty("initsize")));
		
		//线程最大数量
		bs.setMaxActive(
			Integer.parseInt(
				properties.getProperty("maxactive")));
		
		//最大等待时间
		bs.setMaxWait(
			Integer.parseInt(
				properties.getProperty("maxwait")));
		
		//最小空闲时间
		bs.setMinIdle(
				Integer.parseInt(
						properties.getProperty("minidle")));
		//最大空闲时间
		bs.setMaxIdle(
			Integer.parseInt(
				properties.getProperty("maxidle")));
		
		//初始化线程
		td = new ThreadLocal<Connection>();
		}catch(Exception e){
			e.printStackTrace();
			
		}
		}
		
	//获取连接
	public static Connection getConnection() throws SQLException{
		Connection connection = bs.getConnection();
		td.set(connection);
		return connection;
	}
	
	//断掉连接
	public static void closeConnection(){
		try{
		//
		Connection connection = td.get();
		if(connection != null){
			connection.close();
		}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}




下面是实现代码:事先数据库连接池技术:

package com.csdn.jdbcdemo.date2017_11_12;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

public class BasicDataSourceDemo2 {
	public static void main(String[] args) {
		
		try{
			//连接
			Connection connection = BasicDataSourceDemo.getConnection();
			
			//创建DB对象
			Statement state = connection.createStatement();
			
			//SQL语句
			String sql = "SELECT * FROM USER_INFO";
			
			//处理结果集
			ResultSet rs = state.executeQuery(sql);
			
			//遍历结果
			while(rs.next()){
				System.out.println(
					rs.getString("ENAME")+"   "
					+rs.getInt("ID")+"   "
					+rs.getInt("SAL")+"   "
					+rs.getString("EMAIL")
					);
			}
			state.close();
			rs.close();
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			BasicDataSourceDemo.closeConnection();
		}
	}
}


配置文件信息


#这个是驱动名
driver=oracle.jdbc.driver.OracleDriver
#这个是数据库路径
url=jdbc:oracle:thin:@<域名>:1521:<SID>
#这个是数据库用户名
username=xxxxxx
#这个是数据库密码
password=xxxxx
#线程初始化数量
initsize=1
#线程最大活动数量
maxactive=1
#线程等待时间
maxwait=5000
#线程空闲最小数量
minidle=1
#线程最大数量
maxidle=1




避坑指南:华为2288H-V5服务器安装系统时常见的RAID与驱动问题解决方案 本文针对华为2288H-V5服务器在安装系统时常见的RAID与驱动问题,提供了详细的避坑指南。文章深度解析了从BIOS版本兼容性核查、RAID配置实战到驱动加载与集成的全流程,重点解决了安装过程中因RAID控制器驱动缺失或兼容性问题导致的硬盘无法识别等典型故障,帮助用户高效完成系统部署。 阅读详情

相关推荐

超详细 Git创建仓库及上传项目至Github操作(Windows系统)

文章目录前言一、Git下载及安装二、创建代码仓库1.配置身份2.创建本地仓库3.提交本地代码三、使用Git上传代码至Github1.创建ssh keys2.在Github中新建仓库3.关联本地仓库与Github仓库4.推送代码至Github仓库总结 前言 本文对于Windows系统上git的安装及基本使用方法进行简单介绍,并介绍如何使用git将仓库中的项目上传至个人的Github中去。内容参考《第一行代码》以及一些博客。 本文适合新手阅读哦~ 一、Git下载及安装 打开网站 git下载 下载安装包(直接

lijianyi0219的博客 2万+

JDBC性能优化及连接池

君子的力量永远是行动的力量,而不是语言的力量。 事务控制

We_chuan的博客 1464

易语言游戏Call调用避坑指南:主线程绑定与反检测实战

本文详细解析了易语言游戏Call调用中的主线程绑定与反检测技术,帮助开发者避免游戏崩溃和断线问题。通过分析线程检测原理、提供易语言实现方案及高级反检测技巧,如动态线程绑定和上下文伪装,确保Call调用的稳定性和安全性。文章还包含常见问题排查和性能优化建议,适用于游戏辅助开发领域。

weixin_29323365的博客 459

Spark读取Mysql性能优化

spark读取MySQL默认的并行度只有1,即使手动指定了并行度numPartitions,也不会生效,这在读取大表的时候会成为性能瓶颈 想要提高并行度读取MySQL,则需要获取到该表主键的上下界,然后指定numPartitions,程序就会按照设置的并行度均匀拆分,每个task会去并行读取拆分后的数据,实现方法如下所示: import org.apache.spark.sql.SparkSession import scalikejdbc.{ConnectionPool, ConnectionPoolSe

xiaozhaoshigedasb的博客 1111

手把手教你用WF100DPZ数字压力传感器搞定I2C/SPI通信(附完整寄存器解析)

本文详细解析了WF100DPZ数字压力传感器的I2C与SPI通信驱动方法,涵盖硬件连接、寄存器配置、数据读取流程及常见问题排查。该传感器内置24位ADC和出厂校准,通过实战代码演示了如何稳定获取高精度压力与温度数据,帮助开发者快速集成到嵌入式项目中。

weixin_28285943的博客 375

OneOS远程升级能力实操演示 | OTA升级

OneOS远程升级能力实操演示,差分算法提升效率,OTA升级,OTA差分算法,全量升级、压缩升级、差分升级,有线网络连接,bootloader,升级平台,在线差分包制作,触摸屏以及GUI图形操作

OneOS是中国移动针对物联网领域推出的轻量级操作系统 2011

JDBC 数据库连接池

当对数据库的访问不是很频繁时,可以在每次访问数据库时建立一个连接,用完之后关闭。但是,对于一个复杂的数据库应用,频繁的建立、关闭连接,会极大的减低系统性能,造成瓶颈。所以可以使用数据库连接池来达到连接资源的共享,使得对于数据库的连接可以使高效、安全的复用。 在开发具体项目时没有必要自己编写数据库连接池,现在已经有很多现成的组件。许多服务器已经内置了数据库连接池,如Tomcat服务器、Jboss服

ldcaws的专栏 607

【HOJ系列】HOJ判题机部署

【HOJ系列】HOJ判题机部署

随风浪仔的专栏 903

JDBC连接数据库(三):连接池

连接池概述 一. 为什么要用连接池技术   传统数据库访问方式:一次数据库访问对应一个物理连接,每次操作数据库都要打开、关闭该物理连接, 系统性能严重受损。 解决办法:数据库连接池技术。   系统初始运行时,主动建立足够的连接,组成一个池.每次应用程序请求数据库连接时,无需重新打开连接,而是从池中取出已有的连接,使用完后,不再关闭,而是归还。 二. 连接池的组成 1. 连接池的建立; 2....

zmt0104的博客 1080

PGM-Explainer实验总结

PGM-Explainer建立了一个概率图模型,为GNN提供实例级解释。 论文标题:PGM-Explainer: Probabilistic Graphical Model Explanations for Graph Neural Networks 论文地址:2010.05788.pdf (arxiv.org) PGM-Explainer实验 实验目的 研究PGM-Explainer的有效性 实验方案 合成数据集的节点分类 与其他解释器做对比实验 使用六个合成数据集。 每个输入图都是一个

笔记|思路|总结 1万+

Python + OpenCV 计算视频中运动最慢小球的坐标验证码

本文提出一种基于Python和OpenCV的视频分析方法,用于检测多个运动小球中最慢运动目标的坐标。方法主要包括:1) 通过背景差分和形态学处理提取运动前景;2) 基于轮廓面积和圆形度筛选候选小球;3) 利用图像矩计算小球质心坐标;4) 通过近邻关联构建运动轨迹;5) 根据轨迹平均速度确定最慢目标。该方法能有效处理包含线条干扰和静态大圆干扰的背景,稳定输出最慢小球的中心坐标。实验结果表明,该方法能准确识别运动最慢的小球并定位其位置。

码王吴彦祖的博客 112

03-连接池技术

1. 连接池技术 连接池是一个创建和管理连接的缓冲池技术,它不仅仅只限于管理数据库访问连接,也可以管理其他连接资源。连接池技术是创建和管理连接的技术,因此它主要关注的重点在于如何创建连接以及如何管理连接。 1.1 JDBC弊端 JDBC在操作数据库上是很有条理的,但是也存在一定的问题,来看看JDBC访问数据库的步骤: 核心业务都是在增删改查的操作上面,但是每个操作都是建立在有连接的基础上,只有拿到了连接资源才能够增删改查,JDBC中关键的第一步就是得到连接资源。 连接资源往往是需要用的时候就去获取,不用

天天向上 454

http协议

HTTP 协议由起始行、头部、空行、消息体组成。

qq_34059233的博客 88

JAVA之JDBC数据库连接池(超详细介绍)

JDBC数据库连接池一、JDBC数据库连接池的必要性二、数据库连接池技术三、多种开源的数据库连接池3.1 C3P0数据库连接池3.2 DBCP数据库连接池3.3 Druid(德鲁伊)数据库连接池 一、JDBC数据库连接池的必要性 1、在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤: (1)在主程序(如servlet、beans)中建立数据库连接 (2)进行sql操作 (3)断开数据库连接 2、这种模式开发,存在的问题: (1)普通的JDBC数据库连接使用 DriverManager 来

weixin_43520450的博客 3万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

JDBC和数据库连接池。

▶ 概述JDBC为访问不同的数据库提供了统一的接口,为使用者屏蔽了细节问题。Java程序员使用JDBC, 可以连接任何提供了JDBC驱动程序的数据库系统,从而完成对数据库的各种操作。▶ 原理示意图▶ JDBC的好处JDBC是Java提供一套用于数据库操作的接口API, Java程序员只需要面向这套接口编程即可。不同的数据库厂商,需要针对这套接口,提供不同实现。▶ API。...

yzh2776680982的博客 2937

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

JDBC与数据库连接池

JDBC简介,driver类型,JDBC连接,使用技巧; 连接,短连接,长连接,连接池; 池化思想; 配置,基本配置,关键配置,性能配置; 连接池工具; druid; HikariCP; flexy-pool;

lonelymanontheway的博客 3万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

不会吧不会吧!居然还有人不知道JDBC的连接池技术!!!

Hello,你好呀,我是灰小猿,一个超会写bug的程序猿! 今天来和大家分享一下在javaweb中使用JDBC的连接池技术连接数据库的操作。 关于JDBC技术我相信很多小伙伴多少都会有些了解了,所以我在这里就简单的对它进行概述一下。 JDBC又叫数据库连接技术,全称“Java DataBase Connectivity”,它作为Java代码和数据库之间连接的桥梁,具有的典型特点就是可移植性强,所以使用JDBC技术不需要为每一种数据库编写相关的操作程序, JDBC的连接过程如下: 使用.

累计发表博客60余万字,优快云 博客专家、Java 领域优质创作者、华为云享专家、阿里云专家博主。专注分享 Java 优质文章,毕设实战项目开发,全网粉丝10W+ 7280

JDBC连接池

连接池是创建和管理数据库连接的缓冲池技术,它预先建立一定数量的数据库连接,当应用程序需要时从池中获取连接,使用完毕后归还给池而不是直接关闭。

echo_123qq的博客 2083

JDBC常见的几种连接池使用

数据库连接池是一种管理数据库连接的技术,它可以在应用程序启动时创建一定数量的数据库连接,并将这些连接保存在一个连接池中。当应用程序需要访问数据库时,可以从连接池中获取一个空闲的连接,使用完毕后再归还给连接池。这样可以提高应用程序访问数据库的效率,减少数据库连接的开销。

2301_80263923的博客 1812

数据库连接池技术

目录目录 JDBC 操作数据库 JDBC-ODBC 桥 JDBC 连接数据库 DBCP 连接池 TOMCAT 连接池 C3P0 连接池 Druid连接池JDBC 操作数据库<提示:JDBC -ODBC 桥连接已经不再广泛使用. 淘汰的技术>JDBC-ODBC 桥JDBC-ODBC桥是一个JDBC驱动程序。完成了从JDBC操作带ODBC操作之间的转换工作。允许JDBC驱动程序被用作ODBC的驱动程序。

吴杨的博客 4921

JDBC连接池技术详解

本文介绍了JDBC连接池的作用与常见实现,如Druid和HikariCP,通过连接池优化数据库连接管理,减少资源消耗,提升系统性能。详细演示了Druid和HikariCP的配置与使用,帮助开发者高效处理数据库连接问题。

m0_73941339的博客 1460

<JDBC> 数据库连接池技术:你知道这些吗?

【包括了:数据库连接池技术、优点、数据库连接池必要性、多种开源数据库连接池、C3P0数据库连接池、获取连接方式一、获取连接方式二(推荐)、DBCP数据库连接池、配置属性说明、获取连接方式一、获取连接方式二(推荐)、Druid(德鲁伊)数据库连接池、详细配置参数】...

小鳴人的博客 646

JDBC的连接池使用

本文聚焦于 JDBC 连接池的使用,首先阐述了数据库连接池的定义和工作原理,让读者对连接池技术有一个基础的认识。接着,详细介绍了四种常见的 JDBC 连接池,介绍了其优缺点、适用场景、依赖引入、配置文件创建以及代码加载配置文件的实现方式,并列出了常见的配置参数及说明。通过本文的内容,可以了解 JDBC 连接池的使用,根据项目需求选择合适的连接池并进行配置和使用。

不屈的铝合金的博客 1219

JDBC使用连接池技术

数据库连接池概述 数据库连接池是一种提高数据库连接效率的技术,通过预先创建并管理多个数据库连接对象,解决传统方式中频繁创建连接导致的性能问题。主要优势包括: 避免重复创建连接,提升性能 控制最大连接数,防止服务器过载 提供连接复用机制 常见连接池产品包括Druid、HikariCP等,均实现javax.sql.DataSource接口。连接池配置包含初始连接数、最大连接数、最小/最大空闲连接数等关键参数。 Druid连接池使用步骤: 引入依赖包 配置属性文件 通过工厂创建DataSource 获取连接并进行

weixin_63855746的博客 760

JDBC连接池技术

一.连接池技术 (1)Java语言通过JDBC技术访问数据库的基本过程是: 1.加载数据库驱动程序; 2.通过JDBC建立数据库连接; 3.访问数据库,执行SQL语句; 4.断开数据库连接。 (2)在Web应用程序开发中,使用这种模式访问数据库时,存在很多问题,为了解决这些问题,可以采用数据库连接池技术。 连接池实际上是在一个集合对象中存储一定数量的数据库连接对象。当程序需要

徐刘根的博客 3603

深入浅出 JDBC 与数据库连接池

本文介绍了Java开发中与数据库交互的核心技术——JDBC和数据库连接池。JDBC是Java操作数据库的标准API,通过注册驱动、获取连接、执行SQL语句等步骤实现数据库操作。文章详细讲解了JDBC的基础开发步骤,并提供了查询操作的代码示例。此外,文章还介绍了如何通过工具类和配置文件简化JDBC操作,以及JDBC事务管理的概念和操作。最后,文章探讨了数据库连接池的作用和优势,介绍了常见的开源连接池如DBCP、C3P0和Druid,并提供了使用Druid连接池的配置和工具类代码。

2403_87729201的博客 1518
上一篇: JDBC入门:如何动态来连接DataBase
下一篇: 使用JDBC进行后台登录和注册操作
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值