DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要3个包:commons-dbcp.jar,commons-pool.jar和commons-connections.jar,由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。



一、使用步骤:

1.编写配置文件dbcpconfig.properties,编辑数据源

配置文件内容:

#连接设置
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/库
username=root
password=******#初始化连接
initialSize=5#最大连接数量
maxActive=10#最大空闲连接
maxIdle=6#最小空闲连接
minIdle=2#超时等待时间,以毫秒为单位
maxWait=60000#JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;]
connectionProperties=useUnicode=true;characterEncoding=gbk#指定由连接池所创建的连接的自动提交(auto-commit)状态。
defaultAutoCommit=true#driver default 指定由连接池所创建的连接的只读(read-only)状态。
defaultReadOnly=#driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)
defaultTransactionIsolation=READ_UNCOMMITTED

2.优化jdbcUtils类:

import org.apache.commons.dbcp2.BasicDataSourceFactory;import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;/*** 工具类*/
public final class JdbcUtils {/*** 连接池类对象*/private static DataSource dataSource;private JdbcUtils() {}/*** 注册驱动*/static {try {Class.forName("com.mysql.jdbc.Driver");// 利用Properties集合加载数据源Properties prop = new Properties();InputStream is = JdbcUtils.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");prop.load(is);// 利用工厂模式创建数据库dataSource = BasicDataSourceFactory.createDataSource(prop);} catch (Exception e) {throw new ExceptionInInitializerError(e);}}/*** 建立连接** @return* @throws SQLException*/public static Connection getConnect() throws SQLException {return dataSource.getConnection();}/*** 释放资源** @param rs* @param st* @param conn*/public static void free(ResultSet rs, Statement st, Connection conn) {try {if (rs != null) {rs.close();}} catch (SQLException e) {e.printStackTrace();} finally {try {if (st != null) {st.close();}} catch (SQLException e) {e.printStackTrace();} finally {if (conn != null) {try {conn.close();} catch (Exception e) {e.printStackTrace();}}}}}
}

3.测试:

public static void main(String[] args) throws SQLException {for (int i = 0; i < 10; i++) {Connection connection = JdbcUtils.getConnect();System.out.println(connection);System.out.println(connection.getClass().getName());JdbcUtils.free(null, null, connection);}}

结果:

733957003, URL=jdbc:mysql://localhost:3306/test, UserName=root@localhost, MySQL Connector Java
org.apache.commons.dbcp2.PoolingDataSource$PoolGuardConnectionWrapper
55331187, URL=jdbc:mysql://localhost:3306/test, UserName=root@localhost, MySQL Connector Java
org.apache.commons.dbcp2.PoolingDataSource$PoolGuardConnectionWrapper
1991294891, URL=jdbc:mysql://localhost:3306/test, UserName=root@localhost, MySQL Connector Java
org.apache.commons.dbcp2.PoolingDataSource$PoolGuardConnectionWrapper
198761306, URL=jdbc:mysql://localhost:3306/test, UserName=root@localhost, MySQL Connector Java
org.apache.commons.dbcp2.PoolingDataSource$PoolGuardConnectionWrapper
1263877414, URL=jdbc:mysql://localhost:3306/test, UserName=root@localhost, MySQL Connector Java
org.apache.commons.dbcp2.PoolingDataSource$PoolGuardConnectionWrapper
1208736537, URL=jdbc:mysql://localhost:3306/test, UserName=root@localhost, MySQL Connector Java
org.apache.commons.dbcp2.PoolingDataSource$PoolGuardConnectionWrapper
712256162, URL=jdbc:mysql://localhost:3306/test, UserName=root@localhost, MySQL Connector Java
org.apache.commons.dbcp2.PoolingDataSource$PoolGuardConnectionWrapper
1182461167, URL=jdbc:mysql://localhost:3306/test, UserName=root@localhost, MySQL Connector Java
org.apache.commons.dbcp2.PoolingDataSource$PoolGuardConnectionWrapper
561247961, URL=jdbc:mysql://localhost:3306/test, UserName=root@localhost, MySQL Connector Java
org.apache.commons.dbcp2.PoolingDataSource$PoolGuardConnectionWrapper
1863932867, URL=jdbc:mysql://localhost:3306/test, UserName=root@localhost, MySQL Connector Java
org.apache.commons.dbcp2.PoolingDataSource$PoolGuardConnectionWrapper


二、DBCP在IDEA的配置过程

1.首先从Apache官网下载所需要的三个依赖jar包,地址:http://commons.apache.org/proper/
2.打开idea的项目属性,导入需要的jar包:


注:以上导包的行为也可以用maven依赖的形式完成。



三、遇到的问题

按照上面的步骤操作下来,会发现出现异常:
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
原因是还缺少commons-logging.jar包,从上面的网址中找到对应的jar包,导入到前面几个jar包 的位置就好

IDEA中的DBCP使用及问题解决相关推荐

  1. nginx反向代理(proxy_pass)tomcat的过程中,session失效的问题解决

    nginx反向代理(proxy_pass)tomcat的过程中,session失效的问题解决 参考文章: (1)nginx反向代理(proxy_pass)tomcat的过程中,session失效的问题 ...

  2. ssm把图片保存到项目中_项目中的图片跨域问题解决方式

    现象 首先,在生产环境中,由于进行编辑图片时,将图片回显到ReactCrop组件中进行可裁剪编辑,然而回显时,需要将图片转化为base64的格式或者blob对象, 此时需要将图片次绘制成canvas进 ...

  3. iframe中src参数过长问题解决

    iframe中src参数过长问题解决 参考文章: (1)iframe中src参数过长问题解决 (2)https://www.cnblogs.com/pengfei25/articles/7473503 ...

  4. redis在应用中使用连接不释放问题解决

    redis在应用中使用连接不释放问题解决 参考文章: (1)redis在应用中使用连接不释放问题解决 (2)https://www.cnblogs.com/a393060727/p/5281950.h ...

  5. web项目中js加载慢问题解决思路

    web项目中js加载慢问题解决思路 参考文章: (1)web项目中js加载慢问题解决思路 (2)https://www.cnblogs.com/cslj2013/p/8491786.html 备忘一下 ...

  6. IDEA中无法识别JSP语言问题解决

    IDEA中无法识别JSP语言问题解决 问题:out.print中print红色报错 原因:没有导入架构 解决方法: project Structure→model→dependencies 就可以了 ...

  7. mathtype 复制粘贴到word中公式显示不全的问题解决方法

    mathtype 复制粘贴到word中公式显示不全的问题解决方法 由于论文模板中的段落行距设置成了固定值,而复制的公式纵向过长,仅能显示固定值设定的磅值区域. 解决办法为选定该公式,格式-段落-行距- ...

  8. kvm虚拟机中鼠标不同步的问题解决方法

    kvm虚拟机中鼠标不同步的问题解决方法 参考文章: (1)kvm虚拟机中鼠标不同步的问题解决方法 (2)https://www.cnblogs.com/caidingyu/p/10695768.htm ...

  9. java redis释放连接_redis在应用中使用连接不释放问题解决

    今天测试,发现redis使用的时候,调用的链接一直不释放.后查阅蛮多资料,才发现一个配置导致的.并不是他们说的服务没有启动导致的. 1)配置文件 #redis连接配置================= ...

最新文章

  1. 推荐GitHub上几个比较热门的开源项目,记得收藏下!!!
  2. ci ajax js,CodeIgniter4 AJAX请求
  3. paip.元数据驱动的转换-读取文件行到个list理念 uapi java php python总结
  4. Android textview字体颜色显示和图片显示
  5. web browser 发展史
  6. 前端学习(2800):实现news-item的封装
  7. 两个框架之间的数据类型转换,需要桥接技术
  8. 初步了解CUDA(零)
  9. weiapi2.2 HelpPage自动生成接口说明文档和接口测试功能
  10. 安装项目管理工具 SVN+Redmine
  11. 归并算法(Java实现)
  12. Windows的重要服务端口135/137/138/139/445
  13. WPF学习第十二集-绘图和动画
  14. 怎样下载ImageNet数据集并使用?
  15. 量化信噪比 非均匀量化_非均匀量化-Read.PPT
  16. Android 仿微信语音识别
  17. Designing Network Design Spaces
  18. 校企同游快乐工作——湖南工程职院美和易思教师开展素质拓展活动
  19. python nginx部署_nginx部署python应用
  20. jxTMS--web界面定义

热门文章

  1. 沈阳大学生招聘2020计算机,2020—毕业生必备的各大就业信息网站汇总
  2. 完成后台管理系统功能(八)商品的修改以及删除
  3. react实现Modal弹窗
  4. YOLOv5/v8改进主干GhostNetV2系列:首发结合最新NIPS2022华为诺亚的GhostNetV2 架构:引入长距离注意力机制增强廉价操作,构建更强端侧轻量型骨干,打造高效轻量级检测器
  5. Oracle RAC中的几个IP
  6. 计算机网络技术(一)——概论
  7. 中国塑料土工格栅行业市场供需与战略研究报告
  8. CANape19系统需求与特性简介
  9. TextMeshPro常用中英文字符(含多语言)
  10. vscode代码索引_VSCode 配置文件的变量索引