数据库连接池之DBCP
前言
在之前的文章中,我们学习了如何使用原生的JDBC连接操作数据库,如果对使用原生JDBC操作数据库比较熟的读者,可能会注意到这样一个问题,就是每次需要使用的时候,都需要获取一个Connection,然后通过Connection来获得相应的PreparedStatement,进而操作数据库。当每次创建一个Connection的时候,所需要消耗的资源是比较大的,但是如果使用单例的Connection,又无法提高性能,这个时候问题的就出现了,一方面我们希望减少频繁创建Connection来减少资源的消耗,从而提高性能,另一方面,又希望能够在并发量比较大的时候,能够有多个Connection并发操作,从而提高性能。解决这个问题的一个比较好的做法就是使用池化技术,也就是通过创建数据库连接池来管理Connection,每次使用完一个Connection之后,便将其归还给池,而不是关闭,当再次需要获取的时候,直接从池中拿出,这样就减少了很大的创建、销毁Connection的消耗了,在Java中,目前使用得比较多的数据库连接池技术有两种,分别是DBCP以及C3P0,这一小节主要学习DBCP,下一小节将学习C3P0
DBCP的简单介绍
DBCP是Apache软件基金会组织下的一个开源的数据库连接池的实现,全称是DataBase Connection Pool,tomcat默认使用的连接池组件,单独使用时需要两个组件commons-dbcp.jar,commons-pool.jar
DBCP的使用
了解了数据库连接池的基本概念、作用、种类以及DBCP的简单介绍之后,下面我们来动手写一个简单的案例,更加深入地了解DBCP
这里笔者使用Maven来进行项目的管理,如果对Maven还不了解的读者,可以参考笔者之前写过的关于Maven的几篇文章,这里就不进行展开,开发工具笔者使用IDEA
建立一个简单的Maven工程之后,添加对应的依赖,如下所示:
在创建连接池之前,我们需要对连接池就行一些必要的设置,比如说最大允许同时使用多少个Connection,初始化时创建多少个Connection,超时时限等等,具体可以参考官方给出的参数列表 ,笔者这里给出一个简单的配置,具体的情况需要根据需要进行配置
简单地配置完参数之后,接下来,我们就来具体看看在代码中如何使用DBCP
编写一个静态工具类,用于加载properties文件,如下所示:
通过上面的简单设置,基于DBCP连接池技术的一个连接池就已经配置好了,接下来我们写一个简单的测试方法对其进行测试
笔者这里使用一个名为spring的数据库,并且建立一张表t_user,有两个字段user_name 以及 password,读者根据需要进行调整即可
运行结果如下所示
如果读者比较细心的话,会留意到控制台同时会输出十句下面这样的语句
这也就说明了配置文件确实生效,当前系统中已经存在了十个可用的Connection。
总结
本小节我们主要学习了数据库连接池出现的原因–提高性能,以及两种常见的数据库连接池技术DBCP以及C3P0,并且通过一个简单的案例对DBCP进行了一个基本使用的学习。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!