前言
之前有介绍一篇关于自定义的数据库链接池实现,但是质量并不高。而且遭到博友的一脸嫌弃!确实,拿出来的东西就应该保证是正确的,或者质量高,否则很容易就误导了他人,显得TMD也不道德,所以今天专门重写之前的想法,当然,还有许多文章需要更新,后期我都会一一完善,希望对各位有一定的帮助。
目前针对Java web应用使用的数据库链接池比较多也很杂,但稳定且好用的还是推荐阿里巴巴的druid(德鲁伊连接池)。那么下面就重点介绍自定义链接池和使用阿里巴巴的durid连接池,不足指出请指正。
什么是连接池?
连接池是一种创建和维护JDBC连接对象集合的机制。维护连接对象池的主要目的是利用可重用性。只有在没有可用的连接对象时才会创建新的连接对象。这种技术可以提高应用程序的整体性能。本文将尝试展示如何将这种池化机制应用于Java应用程序。
为什么要用连接池?
建立数据库连接是一个非常耗费资源的过程,需要大量的开销。而且,在多线程环境下,打开和关闭连接会使情况变得更糟。要了解创建新数据库连接的每个请求可能发生的情况,请考虑以下几点。数据库连接使用的是成立的DriverManager的数据源对象。应用程序可以调用getConnection()方法。 JDBC驱动程序请求一个JVM套接字。 JVM必须确保调用不会违反安全方面(小程序可能会出现这种情况)。 在进入网络云之前,调用可能需要通过防火墙渗透。 到达主机时,服务器处理连接请求。 数据库服务器初始化连接对象并返回到JDBC客户端(再次通过相同的过程)。 最后,我们得到一个连接对象。
这只是幕后实际情况的简单概述。放心吧,实际的过程比这个更加复杂和精细。在单线程控制的环境中,数据库事务大部分是线性的,比如打开连接,完成数据库事务,关闭连接。实际应用更复杂; 连接池的机制可以增加性能,尽管还有许多对于应用程序整体性能至关重要的其他属性。
连接池概念的复杂性在我们深入研究的过程中变得越来越难理解。但是,要感谢那些专门为连接池合作而制作图书馆的人们。这些库遵循JDBC的规范,并提供更简单的API来实际在Java应用程序中实现它们。
怎样使用连接池?
1、自定义链接池
连接池的管理用了享元模式,这里对连接池进行简单设计。
【一】、设计思路
(1).连接池配置属性DBbean:里面存放可以配置的一些属性
(2).连接池接口IConnectionPool:里面定义一些基本的获取连接的一些方法
(3).接口实现ConnectionPool:对上面操作进行实现,并加入一些其他方法
(4).连接池管理ConnectionPoolManager:管理所有的不同的连接池,所有的连接都能通过这里进行获得连接
(5).另外还有几个测试类,和连接信息模拟的类,这里就不进行xml 和配置文件信息的读取了
【二】、测试代码实现(数据库驱动版本是5.1.38、连接池版本是阿里巴巴druid-1.1.5)
代码目录结构:
(1)配置文件类
packagecom.yjf.java.bean;
importjava.io.Serializable;
/**
* Created by rooton 20170924.
* Update date:
*
* Time: 1:50 PM
* Project:test-java
* Package:com.yjf.java.bean
* Describe :</