数据库连接池优缺点详解

一、访问数据库原因
在java程序中,需要访问数据库,做增删改查等相关操作。如何访问数据库,做数据库的相关操作呢? 
二、Java连接数据库方法概述 
java.sql提供了一些接口和类,用于支持数据库增删改查等相关的操作。该jar包定义了java访问各种不同数据库(mysql,oracle,sqlserver。。。。。)的统一接口和标准。同时,各个数据库厂商都提供了该jar包中定义的各个接口的实现类,用于具体实现本厂数据库的增删改查操作,即称之为“数据库驱动jdbc driver”。例如mysql的数据库驱动为:com.mysql.jdbc.driver;oracle的数据库驱动为:oracle.jdbc.driver.oracledriver。 
在java程序中访问数据库,做数据库连接时,可以采用两种方式: 
1、使用java.sql API 
利用该包提供的各种接口和类直接访问数据库。 
2、使用数据库连接池 
目前存在多个开源的java数据库连接池,这些连接池都是在java.sql基础上编写而成。 
?  该连接池的解决的问题是: 
当使用java.sql中提供的api创建数据库连接时候,需要耗费很大的资源,要进行用户名密码数据库连接验证等,即耗费资源也耗费时间。如果在程序中,每次需要访问数据库时候,都进行数据库连接,那么势必会造成性能低下;同时,如果用户失误忘记释放数据库连接,会导致资源的浪费等。而数据库连接池就是解决该问题,通过管理连接池中的多个连接对象(connection),实现connection重复利用。从而,大大提高了数据库连接方面的性能。 
?  该连接池的功能是: 
负责创建,管理,释放,分配数据库连接即(connection)。首先,负责创建相应数目的数据库连接对象(connection)对象,并存放到数据库连接池(connect pool)中。当用户请求数据库连接时,该连接池负责分配某个处于空闲状态的数据库连接对象;当用户发出释放该数据库连接时,该连接池负责将该连接对象重新设置为空闲状态,以便被别的请求重复利用。同时;数据库连接池负责检查(空闲时间>最大空闲时间)的数据库连接,并释放。 
?  连接池主要参数介绍 
最小连接数:初始化时,系统将负责创建该数目的connection放入连接池中。 
最大连接数:系统允许创建connection的最大数值。当系统请求连接时候,且连接池中不存在空闲的连接:如果connection总数未超过最大连接数,那么连接池负责创建新的connection对象,并返回该对象;如果connection总数已经到达该最大连接数,那么连接池将用户请求转入等待队列。 
三、常用的数据库连接池 
1、 JNDI 
2、 C3p0 
3、 Apache 的Jakarta DBCP 
4、 BoneCP 
其中,sping框架依赖的第三方使用了c3p0和dbcp两种方式;而bonecp号称是速度最快的数据库连接池。JNDI方式创建实现的datasource是真正实现了javax.sql.datasource;其他的三种方式都不是。下面的列表,列出了几种方式的区别和不同: 
序号 
连接池名称 
依赖的jar包 
实现的datasource类 
备注 

JNDI 
该数据源是由相应的web服务器(例如:tomcat,weblogic,websphere)负责初始化,创建,管理。程序中不需要引入特别的jar包。 
Javax.sql.datasource 



C3P0 
c3p0-0.9.xxx.jar 
com.mchange.v2.c3p0.ComboPooledDataSource 



DBCP 
commons-dbcp.jar,commons-pool.jar 
org.apache.commons.dbcp.BasicDataSource 



BoneCP 


bonecp-0.6.5.jar 
· google-collections-1.0.jar 
· slf4j-api-1.5.11.jar 
· slf4j-log4j12-1.5.11.jar 
·log4j-1
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
druid数据库连接池是一个开源的Java数据库连接池。它通过提供高效的、可靠的连接管理和监控功能,帮助开发人员更好地管理数据库连接并提高系统性能。使用druid连接池,你可以实现数据库连接的复用、连接的自动管理、连接的监控和统计等功能。 在使用druid连接池时,你需要按照以下步骤进行配置和使用: 1. 添加druid依赖:在项目的pom.xml文件中添加druid的依赖。 2. 配置数据源:在项目的配置文件中配置druid数据源的相关信息,包括数据库的URL、用户名、密码等。 3. 初始化数据源:在项目启动时,通过编程方式初始化druid数据源,并将其注册到JNDI或者使用Spring等框架进行管理。 4. 获取连接:通过druid数据源的getConnection()方法获取数据库连接。 5. 使用连接:使用获取到的数据库连接执行SQL语句,进行数据库操作。 6. 关闭连接:在使用完数据库连接后,务必通过调用connection.close()方法将连接释放回连接池。 除了基本的数据库连接管理功能,druid还提供了一些高级特性,例如: - 连接池的监控功能:可以通过配置druid的监控管理页面,实时查看连接池的状态、活动连接数、慢SQL等信息。 - SQL防火墙功能:可以对SQL进行实时监控和审计,以防止SQL注入等安全问题。 - 配置参数的动态修改:可以通过监控管理页面或者JMX接口动态修改连接池的配置参数,而无需重启应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值