连接数据库方法2-DBCP
DBCP(连接池):
解决对数据库建立以及关闭连接时消耗大量资源的解决方案。
程序创建和关闭对数据库连接时会消耗大量的资源,连接池技术帮我们
在程序运行的开始时就预先创建大量的连接,这些连接组成一个池,每次
程序请求访问数据库的时候,无需创建连接,而是从池中去除已有的连接。
使用完后不需关闭而是归还连接。
释放与使用原则:
应用程序启动,创建初始化一定数目的连接
当申请时无连接可用,或者达到指定的最小连接数,按增量参数值创建连接。
为确保连接池最小的连接数策略:
1.动态检查:定时检查连接池,一旦发现数量小于最小连接数,则补充相应新的连接,保证连接池正常运作
2.静态检查:空闲连接不足时,系统才检查是否达到最小连接数。
DBCP的创建步骤:
(1)先创建一个properties文件(如:db.properties),里面存放连接池的参数。(此步骤方便对DBCP参数的修改)
(2)properties文件的格式可参考如下:
jdbc.driver=oracle.jdbc.OracleDriver //连接数据库(oracle)的端口 jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl //连接数据库的路径 jdbc.user=system //数据库的用户名 jdbc.password=123456 // 数据库的连接口令 dbcp.nitialSize=10 dbcp.maxIdle=20 dbcp.minIdle=5 dbcp.maxActive=50 dbcp.maxWait=1000

(3)java使用连接池连接数据库的代码:
public class DBCP {
private static BasicDataSource dataSource=null; //创建一个连接池对象
public static void init(){//加载方法
Properties p = new Properties(); //创建properties对象来操作properties文件
try {//加载配置文件
p.load(connetionSource.class.getClassLoader().getResourceAsStream("db.properties")); //映射到properties文件的位置
} catch (IOException e) {
e.printStackTrace();
}
try{
//读取properties文件,获取属性字段
String driver =p.getProperty("jdbc.driver");
String url =p.getProperty("jdbc.url");
String username =p.getProperty("jdbc.user");
String password =p.getProperty("jdbc.password");
// 初始化dataSource
dataSource= new BasicDataSource();
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
/**
* 连接池参数
* 初始连接数 initialSize
* 最大连接数 maxActive
* 最小连接数 minActive
* 每次增加的连接数
* 超时时间 maxWait
* 最大空闲连接 maxIdle
* 最小的空闲连接 minIdle
*/
String initialSize =p.getProperty("dbcp.initialSize");
String minIdle=p.getProperty("dbcp.minIdle");
String maxIdle=p.getProperty("dbcp.maxIdle");
String maxActive= p.getProperty("dbcp.maxActive");
String maxWait =p.getProperty("dbcp.maxWait");
//初始化连接数:
if(initialSize!=null){
dataSource.setInitialSize(Integer.parseInt(initialSize));
}
//最大空闲连接
if(maxIdle!=null){
dataSource.setMaxIdle(Integer.parseInt(maxIdle));
}
//最小空闲连接·
if(minIdle!=null){
dataSource.setMinIdle(Integer.parseInt(minIdle));
}
//最大连接数
if(maxActive!=null){
dataSource.setMaxActive(Integer.parseInt(maxActive));
}
//超时回收连接
if(maxWait!=null){
dataSource.setMaxWait(Integer.parseInt(maxWait));
}
}catch(Exception e){
System.out.println("创建连接池失败,请检查配置");
}
}
public static synchronized Connection getConnection() throws SQLException{
if(dataSource ==null){//没有就连接池则加载一个连接池
init();
}
Connection conn=null;
if(dataSource !=null){
conn=dataSource.getConnection();
}
return conn;
}
}
(4)新开一个类,创建链接
连接数据库方法2-DBCP的更多相关文章
- MATLAB通过ODBC连接数据库方法
MATLAB通过ODBC连接数据库方法 1.首先创建数据库,我在这里用到的是MySQL 8.0 2.建立ODBC数据源,参考链接: https://www.cnblogs.com/benpao1314 ...
- 连接数据库 JDBC、DBCP、JNDI
一.JDBC package com.direct.util; import java.sql.Connection; import java.sql.DriverManager; import ja ...
- JDBC连接数据库方法的封装,以及查询数据方法的封装
(在上一篇文章中,我们详细的介绍了连接数据库的方法,以及eclipse操作数据库信息的相关方法,在这里我们将主要讲封装.) 主要内容: 一般的连接数据库测试 把连接数据库的方法封装成一个类和测试 一个 ...
- python:封装连接数据库方法
config.py # 数据库测试环境 name = '***' password = '******' host_port_sid = '10.**.*.**:1521/bidbuat' Oracl ...
- Django ORM 以连接池方式连接底层连接数据库方法
django原生支持是不支持 以连接池方式连接数据库的 概述 在使用 Django 进行 Web 开发时, 我们避免不了与数据库打交道. 当并发量低的时候, 不会有任何问题. 但一旦并发量达到一定数量 ...
- 连接数据库方法---DAO,RDO,OLE,ADO
2012-12-14 09:40 (分类:计算机程序) DAO (Data Access Objects) 提供了一种通过程序代码创建和操纵数据库的机制.最大特点是对MICROSOFT JET(Jet ...
- Java中数据库连接池原理机制的详细讲解以及项目连接数据库采用JDBC常用的几种连接方式
连接池的基本工作原理 1.基本概念及原理 由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效管理.我们知道,对于共享资源,有一个很著名的设计模式:资源池(Resource Pool).该模式 ...
- 数据库连接池(DBCP:为数据统一建立一个缓冲池,现在企业开发使用)
数据库连接池:(里面放了许多连接数据的链接,负责分配,管理,释放数据库连接,可重复使用连接,而不新建 )为数据统一连接建立一个缓冲池,放好了一定数据库连接,使用时在缓冲池里面拿,用完之后再还给缓冲池 ...
- DAO模型设计实现数据的 增,删,改,查方法
连接数据库方法,及反射获取数据,以前的方法相同,测试类 是在DAO模型下建立的 ------------------------------------------------------------ ...
随机推荐
- 数据结构——java Queue类
定义 队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作. LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用 图例 Que ...
- [题解] UVA11426 GCD - Extreme (II)
题面 莫反是不可能莫反的,这辈子都不可能莫反了 题目要求的是 \[ \sum\limits_{i=1}^n \sum\limits_{j=i+1}^n \gcd(i,j) \] 稍微变个亚子 \[ \ ...
- Django(八)模型:Mysql8.0日志文件配置开启/关闭、查询
Mysql日志文件开启.配置.查看 mysql.log是mysql的日志文件,里面记录的对MySQL数据库的操作记录.默认情况下mysql的日志文件没有产生,需要修改mysql的配置文件,步骤如下: ...
- IIC协议解析
(1)概述 I2C(Inter-Integrated Circuit BUS) 集成电路总线,该总线由NXP(原PHILIPS)公司设计,多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距 ...
- Java之集合
前言: 在写程序当中,集合会经常使用,今天听了马老师的课,写一些自己的总结 正文: 集合最重要的就是一个图,一个类,三个知识点,六个接口 说到图就是上面的图,这个图可以帮我们理解这些接口的继承关系 1 ...
- springboot启动微服务项目时,启动后没有端口号信息,也访问不了
2018-06-05 13:43:42.282 [localhost-startStop-1] DEBUG org.apache.catalina.core.ContainerBase - Add c ...
- 二十一、SAP中通过内表输出数据库中数据
一.我们查看一个SCARR的一个数据库 二.数据库内容如下 三.我们写一个关于内表使用的代码,来显示这个数据库内容 四.输出如下
- 001、MySQL查询服务器版本号和当前日期
SELECT VERSION(), CURRENT_DATE; 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码打赏任意金额给作者(微信号:382477247)哦,谢谢.
- 123-PHP类构造函数
<?php class ren{ //定义人类 private $name; //定义成员属性 public function __construct($name){ //定义构造函数 $thi ...
- 七、React表单详解 约束性和非约束性组件 input text checkbox radio select textarea 以及获取表单的内容
一.约束性和非约束性组件: 非约束性组: MV: <input type="text" defaultValue="a" /> 这个 default ...