栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

三十七、java基于dbcp操作MySQL数据库之BasicDataSource类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

三十七、java基于dbcp操作MySQL数据库之BasicDataSource类

BasicDataSource类 配置pom.xml文件(dbcp)

    commons-dbcp
    commons-dbcp
    1.4

源码位置

org.apache.commons.dbcpl包下

源码类
public class BasicDataSource implements DataSource
普通方法
//A类方法(数据库连接池内的连接,连接db的基本信息)
//设置驱动
public synchronized void setDriverClassName(String driverClassName)
//设置url 默认值null
public synchronized void setUrl(String url) 
//设置账号 默认值null
public void setUsername(String username)
//设置密码 默认值null 
public void setPassword(String password) 

//B类方法(连接池内的连接数)
//初始化连接数 默认值0
public synchronized void setInitialSize(int initialSize)    
//最小空闲连接数 默认值0
public synchronized void setMinIdle(int minIdle)    
//最大空闲连接数 默认值8
public synchronized void setMaxIdle(int maxIdle)    
//最大连接数 默认值8
public synchronized void setMaxActive(int maxActive)  

//C类方法(连接池借出和客户端归还连接前的有效检查)
//最大等待时间 默认值-1
public synchronized void setMaxWait(long maxWait)    
//池子借出连接前检查连接有效性,默认值true需改成false
public synchronized void setTestOnBorrow(boolean testOnBorrow)    
//归还连接前检查连接有效性 默认值false
public synchronized void setTestOnReturn(boolean testOnReturn)    
//检证sql 默认值null
public void setValidationQuery(String validationQuery)

//D类方法(空闲连接的检查) 
//设置是否开启空闲连接巡测 默认值false
public synchronized void setTestWhileIdle(boolean testWhileIdle)    
//设置对空闲连接巡测间隔时间 默认值-1
public synchronized void setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis)    
//设置每次巡测的空闲连接数 默认值3
public synchronized void setNumTestsPerEvictionRun(int numTestsPerEvictionRun)    
//设置连接空闲时间 默认值30分钟
public synchronized void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis)
    
//E类方法(归还连接和预编译配置) 
//归还连接
public synchronized void close()
//是否归还    
public synchronized boolean isClosed()    
//设置预编译 默认值false
public synchronized void setPoolPreparedStatements(boolean poolingStatements)    
dbcp配置总结

一、B类方法配置分析
B1==>initialSize minIdle maxIdle maxActive 配置全部相等
B2==>initialSize minIdle maxIdle maxActive 配置不相等
n=10 20 30 40
==>并发 ==>并发>n时:
1、流量增大情况
会出现池内连接不够用,连接池要现和db建立连接但最多不超过maxActive值,用户线程等待时间增大,T1(与数据库建立连接的时间)没有被取代,违背了连接池原理。
2、流量逐步降低情况
当用户流量下降,连接池内空闲连接增多,但至少保持20–30个连接(需配置D类方法,进行空闲连接巡测),当流量再次增大时,同时借用连接的线程>30时,连接池又要现和db建立连接,又违背了连接池原理。
二、总结
B1 不违背连接池原理 A+B1+C+E
B2 违背连接池原理 A+B2+C+D+E

代码
import org.apache.commons.dbcp.BasicDataSource;

public class TestDbcp {

    //初始化-pool全局共享
    private static BasicDataSource pool = null;

    //连接池需唯一且需先创建
    static {
        if(pool == null) {
            //创建连接池
            pool = new BasicDataSource();

            //连接数据库的基本信息
            pool.setDriverClassName("com.mysql.jdbc.Driver");
            pool.setUrl("jdbc:mysql://ip:3306/interface?characterEncoding=utf-8&useSSL=false");
            pool.setUsername("Username");
            pool.setPassword("Password");

            //连接池内的连接数量
            pool.setInitialSize(10);
            pool.setMinIdle(10);
            pool.setMaxIdle(10);
            pool.setMaxActive(10);

            //连接池借出和客户端归还连接前的连接有效性检查
            pool.setTestOnBorrow(false);
            pool.setTestOnReturn(false);
            pool.setMaxWait(3000);

            //连接池内连接预编译检查
            pool.setPoolPreparedStatements(true);
        }
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/591424.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号