手写数据库连接池(java)

本文介绍作者手写的一个简单的Java数据库连接池,包括其目录结构、配置文件内容以及连接池的主要实现类。在测试过程中,发现在用户连接数较少时表现良好,但用户数量增加时出现连接不足的问题。同时,连接池存在配置不可修改、并发度低及不能自动维护连接等缺陷。
摘要由CSDN通过智能技术生成

手写数据库连接池(java)

我前几天学习了数据库连接池的基本内容,自己尝试着写了一个连接池并导出jar包使用,虽然实现了连接池的基本功能,但也存在一些问题。
以下是我连接池的目录结构:
在这里插入图片描述
配置文件内容:

#驱动路径
driver=com.mysql.jdbc.Driver
#JDBC连接URL
url=jdbc:mysql://127.0.0.1:3306/exercise?characterEncoding=utf8&useSSL=true
#账号
username=root
#密码
password=root
#初始连接池大小
initPoolSize=10
#最小连接数
minPoolSize=10
#最大连接数
maxPoolSize=50
#最大空闲时间
maxIdleTime=100000
#默认自动增长连接数
defaultGrow=5

连接池的三个主要实现类的代码:

package myConnectionPool;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 * 连接类
 * 保存单个数据库连接
 * 记录该连接开始空闲时间和目前空闲时间
 */
public class WSConnection {
    /**
     * 数据库连接
     */
    private Connection connection=null;
    /**
     * 开始空闲时间
     */
    private long startIdleTime;
    /**
     * 目前空闲时间
     */
    private long nowIdleTime;

    /**
     * 构造函数
     * 获得数据库连接和该连接的开始空闲时间
     */
    public WSConnection(String driver, String url, String username, String password){
        try {
            Class.forName(driver);
            connection = DriverManager.getConnection(url, username, password);
            startIdleTime=System.currentTimeMillis();
        } catch (Exception e) {
            System.out.println("连接获取失败!");
            System.exit(0);
        }
    }

    public WSConnection(Connection connection){
        this.connection=connection;
        startIdleTime=System.currentTimeMillis();
    }

    /**
     * 提供获得数据库连接的方法
     */
    public Connection getConnection() {
        return connection;
    }

    /**
     * 提供设置开始空闲时间的方法
     */
    public void setStartIdleTime() {
        this.startIdleTime = System.currentTimeMillis();
    }

    /**
     * 提供获得目前空闲时间的方法
     */
    public long getNowIdleTime() {
        nowIdleTime=System.currentTimeMillis()-this.startIdleTime;
        return nowIdleTime;
    }

    /**
     * 提供
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值