<十三>JDBC_dbcp数据库连接池






配置文件:jdbc.properties
username=root
password=kk
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://192.168.56.1:3306/test
initialSize=10
maxTotal=50
minIdle=5
maxWaitMillis=5000
测试文件:JDBCTest.java
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.commons.dbcp2.BasicDataSourceFactory;
import org.junit.Test;
public class JDBCTest {
/*
* 1、加载dbcp的properties配置文件:配置文件中的键需要来自BasicDataSource的属性
* 2、调用BasicDataSourceFactory的createDataSource方法创建DataSource实例
* 3、从DataSource获取数据库连接
* */
@Test
public void testDBCPWithDataSourceFactory() throws Exception{
Properties properties=new Properties();
InputStream is=JDBCTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
properties.load(is);
DataSource ds=BasicDataSourceFactory.createDataSource(properties);
System.out.println(ds.getConnection());
//验证配置文件的属性
BasicDataSource basicDataSource=(BasicDataSource) ds;
System.out.println("最大等待时间:"+basicDataSource.getMaxWaitMillis());
}
//还有一种不用通过配置文件的方式如下单元测试方法:
/*
* 使用DBCP数据库连接池
* 1、加入jar包
* 2、创建数据库连接池
* 3、设置数据源必须的属性
* 4、从数据源中获取数据库连接
* */
@Test
public void testDBCP() throws SQLException{
//1、创建DBCP数据源实例
final BasicDataSource bds=new BasicDataSource();
//2、为数据源实例指定必须的属性
bds.setUsername("root");
bds.setPassword("kk");
bds.setUrl("jdbc:mysql:///test");
bds.setDriverClassName("com.mysql.jdbc.Driver");
/*
* 3、指定数据源一些可选的属性
* 1>指定数据库连接池中初始化连接数
* 2>指定最大的连接数:同一时刻可以同时向数据库申请的连接数
* 3>指定最小连接数:在数据库连接池空闲状态下,连接池中最少有多少个连接
* */
bds.setInitialSize(10);
bds.setMaxTotal(3);
bds.setMinIdle(2);
//获取连接时的最大等待毫秒数
bds.setMaxWaitMillis(1000*5);
//4、从数据源获取数据库连接
Connection con=bds.getConnection();
System.out.println("1---》"+con);
Connection con2=bds.getConnection();
System.out.println("2---》"+con2);
Connection con3=bds.getConnection();
System.out.println("3---》"+con3);
new Thread(){
public void run() {
Connection conn;
try {
conn=bds.getConnection();
System.out.println("thread->"+conn.getClass());
} catch (Exception e) {
}
};
}.start();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
con2.close();
}
}
<十三>JDBC_dbcp数据库连接池的更多相关文章
- JavaWeb学习总结(十三)--数据库连接池
一.数据库连接池的概念 用池来管理Connection,这可以重复使用Connection.有了池,所以我们就不用自己来创建Connection,而是通过池来获取Connection对象.当使用完Co ...
- Java第三方数据库连接池库-DBCP-C3P0-Tomcat内置连接池
连接池原理 数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”.预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去.我们可以通过设定连接池 ...
- .数据库连接池技术:DBCP和C3P0
数据库连接池技术:DBCP和C3P0 1.什么是数据库连接池 已知的方法是需要访问数据库的时候进行一次数据库的连接,对数据库操作完之后再释放这个连接,通常这样业务是缺点很明显的: 用户每次请求都需要向 ...
- [转]阿里巴巴数据库连接池 druid配置详解
一.背景 java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色 ...
- 数据库连接池c3p0学习
这里只记录c3p0的数据源,不会涉及到其它方面和别的数据库连接池的对比 配置文件主要的实现方式有三种: 1.手写代码去加载一个配置文件 创建一个config.properties文件如下: drive ...
- <十四>JDBC_c3p0数据库连接池
配置文件:c3p0-config.xml <!-- Hibernate官方推荐使用的数据库连接池即c3p0;dbcp是Tomcat在数据源中使用 --><c3p0-config> ...
- c3p0数据库连接池的使用详解
首先,什么是c3p0?下面是百度百科的解释: C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展.目前使用它的开源项目有Hibernate,Sp ...
- Mybatis-update - 数据库死锁 - 获取数据库连接池等待
最近学习测试mybatis,单个增删改查都没问题,最后使用mvn test的时候发现了几个问题: update失败,原因是数据库死锁 select等待,原因是connection连接池被用光了,需要等 ...
- 从零开始学 Java - 数据库连接池的选择 Druid
我先说说数据库连接 数据库大家都不陌生,从名字就能看出来它是「存放数据的仓库」,那我们怎么去「仓库」取东西呢?当然需要钥匙啦!这就是我们的数据库用户名.密码了,然后我们就可以打开门去任意的存取东西了. ...
随机推荐
- DCIntrospect -iOS界面调试
原文:http://www.cnblogs.com/kw-ios/p/3523525.html 有时,设计稿上的UI很漂亮,布局也整齐,但自己用代码写出来的就不行,不是这里高一点,就是那是低一点,使用 ...
- sql奇进偶舍函数
create function sslr(@num numeric(20,10),@i int) --@i保留的小数位 --@num传入的数据 returns varchar(2 ...
- BFS
广(宽)度优先搜索算法(Breadth-First-Search): BFS是从根节点开始,沿着树的宽度遍历树的节点.如果所有节点均被访问,则算法中止.遍历过程如图,一层一层的找(在访问图中某一起始 ...
- iOS 9学习系列:打通 iOS 9 的通用链接(Universal Links)
在WWDC 2015 上, Apple 为 iOS 9 宣布了一个所谓 通用链接 的深层链接特性, 视频地址为 [无缝链接到您的 App].虽然它不是一个必须实现的功能, 但还是需要引起一些注意. 在 ...
- in (1,2)and in('1,2')解决
select wm_concat(org_name) from mstorg where instr((select pass_dists from licrequests where req_no= ...
- 分享一个常用Adb命令
分享一个常用Adb命令 首先 首先感谢@xuxu的常用adb命令,收益良多,但是已经不能满足于我,所以补充了下. 再者 好久没发帖了,最近论坛老司机们都在讨论/总结,我就用这个干货回报吧. 最后 基于 ...
- 【转载】mysql慢查询
mysql> show variables like 'long%'; 注:这个long_query_time是用来定义慢于多少秒的才算“慢查询” +-----------------+---- ...
- MongoVue中Collections无法显示的问题
问题描述: 通过Python向MongoDB写入数据后,MongoVue中Collections无法显示的问题 原因: Mongodb 3.0之后默认的 storageEngine为wiredTige ...
- ifconfig: command not found 如何解决?
ifconfig: command not found 查看path配置(echo相当于c中的printf,C#中的Console.WriteLine) 1 echo $PATH 解决方案1:先看看是 ...
- Linux系统性能优化思路和方法
#影响Linux性能的CPU.内存.磁盘.网络等因素分析1.系统硬件资源:CPU,多核与超线程消耗CPU的业务:动态WEB服务,Mail服务器2.内存:物理内存与swap的取舍,64操作系统消耗内存的 ...