数据库连接池DBCP使用方式

概念

开源数据源实现,使用这些数据库连接池后,我们在项目开发中就不需要编写连接数据库的代码了。

开源数据源包含DBCP、C3P0、Druid等

DBCP Java使用实例:

说在前面

1.准备jar包

commons-dbcp2-2.1.1.jar、commons-pool2-2.9.0.jar

2.添加dbcp properties配置文件

最关键的是连接设置,将数据库的信息修改为自己的数据库。其余配置可以根据实际情况修改,也可不修改。

注意点:配置文件中参数名不能修改,因为dbcp代码中需要去获取这些参数的配置。

配置文件:mysql-dbcp.properties

#连接设置

driverClassName=com.mysql.cj.jdbc.Driver

url=jdbc:mysql://localhost:3306/cclearn?useSSL=true&characterEncoding=utf8&useUnicode=true&serverTimezone=UTC

username=root

password=tester

#

initialSize=10

#最大连接数量

maxActive=50

#

maxIdle=20

#

minIdle=5

#

maxWait=60000

#JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;]

#注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。

connectionProperties=useUnicode=true;characterEncoding=gbk

#指定由连接池所创建的连接的自动提交(auto-commit)状态。

defaultAutoCommit=true

#driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。

#可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE

defaultTransactionIsolation=READ_UNCOMMITTED

3.编写jdbc工具类

jdbc工具类文件:JdbcUtils.Java

首先附上未使用池化技术的Jdbc工具类:

package com.cc.mysql_learn;

import java.io.InputStream;

import java.sql.*;

import java.util.Properties;

public class JdbcUtils {

private static String driver;

private static String url;

private static String username;

private static String password;

static{//写在静态代码块中,类被加载的时候就运行了,只运行一次,优先于各种代码块以及构造函数

try{

Properties properties = new Properties();

InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("mysql.properties");

properties.load(in);//加载mysql.properties文件

driver = properties.getProperty("driver");//获取mysql.properties的信息

url = properties.getProperty("url");

username = properties.getProperty("username");

password = properties.getProperty("password");

Class.forName(driver);//加载驱动

} catch (Exception e) {

e.printStackTrace();

}

}

public static Connection getConnection() throws ClassNotFoundException, SQLException {

return DriverManager.getConnection(url,username,password);//返回连接对象

}

public static void closeConnection(Connection connection, PreparedStatement preparedStatement, ResultSet rs) throws SQLException {

//依次释放

if(rs != null){

rs.close();

}

if(preparedStatement != null){

preparedStatement.close();

}

if(connection != null){

connection.close();

}

}

}

以下是使用DBCP的Jdbc工具类,可以看到,加载驱动及获取数据库连接的功能都被BasicDataSourceFactory创建出来的对象下的getConnection()方法实现了。

package com.cc.mysql_learn;

import org.apache.commons.dbcp2.BasicDataSource;

import org.apache.commons.dbcp2.BasicDataSourceFactory;

import java.io.InputStream;

import java.sql.*;

import java.util.Properties;

public class JdbcUtils {

static BasicDataSource dataSource;

static{

try{

//通过InputStream方式服务properties配置文件

Properties properties = new Properties();

InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("mysql-dbcp.properties");

properties.load(in);

dataSource = BasicDataSourceFactory.createDataSource(properties);

} catch (Exception e) {

e.printStackTrace();

}

}

public static Connection getConnection() throws ClassNotFoundException, SQLException {

return dataSource.getConnection();

}

public static void closeConnection(Connection connection, PreparedStatement preparedStatement, ResultSet rs) throws SQLException {

if(rs != null){

rs.close();

}

if(preparedStatement != null){

preparedStatement.close();

}

if(connection != null){

connection.close();

}

}

}

4.编写主要业务代码

可以看到,在业务层面创建和销毁数据库连接的代码不需要有任何改变,因为改动都在JdbcUtils.Java工具类中。

package com.cc.mysql_learn;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

public class MysqlOptimization {

public static void main(String[] args) throws SQLException, ClassNotFoundException {

Connection connection = JdbcUtils.getConnection();

PreparedStatement preparedStatement = connection.prepareStatement("select * from users;");

ResultSet rs = preparedStatement.executeQuery();

if(rs.next()){

System.out.println(rs.getObject("user_name"));

}

JdbcUtils.closeConnection(connection,preparedStatement,rs);

}

}

原文:https://www.cnblogs.com/ruoleecc/p/14318383.html

mysql dbcp 配置文件_数据库连接池DBCP使用方式相关推荐

  1. druid mysql 配置优化_数据库连接池优化配置(druid,dbcp,c3p0)

    考虑因素 1:当前连接DB的规模   2:并发情况 3:执行db的响应时间 配置考虑 1:初始化连接:可考虑设置为3个连接 .对于db规模特别大的情况下可考虑设置为1个.避免启动时间过长: 2:最小连 ...

  2. oracle mysql连接池配置文件_数据库连接池两种配置方式详解

    数据库连接池: 负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个:释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接 ...

  3. c3p0 mysql 连接池配置文件_数据库连接池c3p0的使用

    原标题:数据库连接池c3p0的使用 来源:java联盟 https://mp.weixin.qq.com/s/5Tbkf8dVFfH8AvtqWl-7Xg 程序员共读整理发布,转载请联系作者获得授权 ...

  4. Java数据库连接池--DBCP浅析

    转载自   Java数据库连接池--DBCP浅析 前言对于数据库连接池, 想必大家都已经不再陌生, 这里仅仅设计Java中的两个常用数据库连接池: DBCP和C3P0(后续会更新). 一. 为何要使用 ...

  5. 数据库连接池 (DBCP、c3p0、Druid) 配置说明和对比

    1. 引言 1.1 定义 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出. 对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据 ...

  6. 常用数据库连接池 (DBCP、c3p0、Druid) 配置说明

    转载自  常用数据库连接池 (DBCP.c3p0.Druid) 配置说明 1. 引言 1.1 定义 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的 ...

  7. jdbc mysql分页_JDBC【数据库连接池、DbUtils框架、分页】

    1.数据库连接池 什么是数据库连接池 简单来说:数据库连接池就是提供连接的... 为什么我们要使用数据库连接池 数据库的连接的建立和关闭是非常消耗资源的 频繁地打开.关闭连接造成系统性能低下 编写连接 ...

  8. jndi mysql数据库_数据库连接池技术中dbcp、c3p0、jndi

    数据库连接池技术中dbcp.c3p0.jndi 发布时间:2020-05-26 08:52:33 来源:51CTO 阅读:371 作者:ikilun 不管通过何种持久化技术,都必须通过数据连接访问数据 ...

  9. javaweb mysql 连接池 c3p0 配置_JavaWeb基础—数据库连接池DBCP、C3P0

    一.基本概念 数据库连接池负责分配.管理和释放数据库连接 数据库连接池:(池用map来实现居多) 用处:为了可重用(销毁创建麻烦,开销大)(招培训老师的例子) 二.编写实现数据库连接池 池参数: 初识 ...

最新文章

  1. Devexpress Xtraform 资源文件 汉化
  2. 开源可视化分析工具,操作简单使用方便,快来种草
  3. 菜刀php木马_php网站安全防止各类一句话木马的攻击
  4. Set常用用法元素检索
  5. LeetCode 11 盛最多水的容器
  6. 阿里云开源的Blink,计算能力很疯狂:一眨眼,全部都算好!
  7. BlockingQueue原理分析(ReentrantLock、Condition的实践)
  8. xcap发包工具的简单使用1(构造报文)
  9. mysql concat字符串拼接函数使用
  10. XShell切换全屏快捷键
  11. java聊天室设计_JAVA网络聊天室的设计与实现
  12. C++二维vector初始化
  13. python调用nmap扫描全端口_Python-通过调用Nmap来进行端口扫描
  14. 在线画图工具绘制流程图怎样做
  15. php ctf题,CTF---PHP安全考题
  16. 智课雅思词汇---八、ject是什么意思
  17. OSChina 周五乱弹 —— 有一个朝代红薯不能去
  18. 推荐贝塔斯曼书友会淘宝旗舰店
  19. 老挑毛u盘一键装系统计算机意外地,u盘装系统 重装Win7系统出现提示计算机意外的重新启动或遇到错误怎么处理 我已经删除了所有分...
  20. 福永苹果服务器维修,苹果发起 iPhone 7 “无服务”问题维修计划

热门文章

  1. 从0-1的CTF比赛环境搭建过程
  2. OpenGL画蜗型线、心形线、三叶曲线、四叶曲线、螺旋线
  3. 读“人生有一种牛逼,叫我能背下来”
  4. 七天免登陆有效期 java_JWT过期刷新问题,实现十五天免登陆
  5. Arturia Sound Explorers Collection Belledonne现已上市
  6. 读《Ivor Horton's beginning Visual C++ 2010》有感
  7. photo2cartoon环境搭建-真人头像卡通画-写实
  8. 机器学习数学基础-最大似然估计与贝叶斯法则
  9. 雨棚板弹性法计算简图_雨棚板的计算书
  10. 【转载】目前市场上主流的BI产品主要有哪些?