java 数据库连接池 开源_(二十一)配置三种开源数据库连接池

目录

前言

一般连接池不需要我们自己写!有开源组织为我们提供了一些连接池 ;

常见的有:

1、DBCP 数据库连接池

2、C3P0 数据库连接池

3、Tomcat内置的连接池(其实也是通过dbcp实现的)

DBCP

DBCP数据源(就是数据库连接池)

·DBCP是Apache软件基金组织下的开源连接池实现,使用DBCP数据源,应用软件应在系统中增加如下两个jar文件:

·Commons-dbcp.jar :连接池的实现

·Commons-pool.jar :接池实现的额依赖库

·Commons-logging.jar :还需要这个依赖(老方当年还不需要导入这个jar包·)

·Tomcat的连接池正是采用该连接池来实现的。该数据库连接池既可以与应用服务器整合使用,也可以由应用程序独立使用 ;

使用方法:(java 代码:)

private static BasicDataSource dataSource ;

static {

try {

Properties properties = new Properties();

// 关联配置文件

properties.load(JdbcDbcpUtils.class.getResourceAsStream("/ijava/xin/properties/dbcpconfig.properties"));

// 读取配置文件

dataSource = BasicDataSourceFactory.createDataSource(properties) ;

} catch (Exception e) {

throw new ExceptionInInitializerError(e) ;

}

}

配置文件写法

#连接设置

driverClassName=com.mysql.jdbc.Driver

url=jdbc:mysql:///user?useUnicode=true&characterEncoding=UTF8

username=root

password=root

#

initialSize=10

#最大连接数量

maxActive=50

#

maxIdle=20

#

minIdle=5

#

maxWait=60000

#JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;]

#注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。

connectionProperties=useUnicode=true;characterEncoding=utf8

#指定由连接池所创建的连接的自动提交(auto-commit)状态。

defaultAutoCommit=true

#driver default 指定由连接池所创建的连接的只读(read-only)状态。

#如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix)

defaultReadOnly=

#driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。

#可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE

defaultTransactionIsolation=READ_COMMITTED

C3P0

C3P0数据源 ( Spring 内置的连接池)

需要我们给它一个配置文件,否则我们就只能在在代码中进行指定配置;

该配置文件的名字,必须是 c3p0-config.xml ;

并且这个配置文件的路径,必须是在 src根目录 下面,也就是说 在 src/xxx/ 下面 都不行。。。

代码

private static ComboPooledDataSource comboPooledDataSource;

static {

try {

// 有配置文件的情况下,可直接根据参数获取对应的配置;

// 不写参数,就是使用默认配置

comboPooledDataSource = new ComboPooledDataSource();

// 没有配置文件的情况下,需要自己手动添加配置

// comboPooledDataSource.setDriverClass("com.mysql.jdbc.Driver");

// comboPooledDataSource.setJdbcUrl("jdbc:mysql:///user");

// comboPooledDataSource.setUser("root");

// comboPooledDataSource.setPassword("root");

// comboPooledDataSource.setMaxPoolSize(30);

// comboPooledDataSource.setMinPoolSize(5);

// comboPooledDataSource.setInitialPoolSize(10);

} catch (Exception e) {

throw new ExceptionInInitializerError(e);

}

}

配置文件

com.mysql.jdbc.Driver

jdbc:mysql:///user

root

root

10

30

20

5

200

50

100

50

1000

0

5

50

100

50

1000

0

5

Tomcat内置数据源

配置Tomcat数据源

其实在我们需要使用数据库连接池的时候,我们大可不必添加第三方的jar包;因为我们的Tomcat内部内置了连接池 ;

有3种方法配置:

1、在服务器里面用Context文件里面配置 (不可取)

2、在服务器里面的catelina 里边加上一个配置文件 (不可取)

3、我们可以发现前两种,方法都需要去改动服务器 ; 第三种则是在web目录下面新建一个 MATE-INF ,下面新建一个context.xml文件,在里面配置连接池 ;

配置文件写法

配置文件写法:在`tomcat`的服务器首页有 :

a、先点击 JDBC DataSource

b、再点击 JNDI Resource 里面找 ;

...

auth="Container"

type="javax.sql.DataSource"

username="dbusername"

password="dbpassword"

driverClassName="org.hsql.jdbcDriver"

url="jdbc:HypersonicSQL:database"

maxActive="8"

maxIdle="4"/>

...

但是这种写法也有问题的,必须将mysql的驱动,加到tomcat的服务器里面。而不是项目里面,相对其他2种方法,这是改动服务器最少的方法了 ;

连接关闭问题

使用了数据库连接池框架以后,就不再需要我们去关注连接的关闭问题了,框架自己会将用完的连接放回到连接池里面;

但是使用了事务的连接,还是需要我们自己去关闭的 ;

备注

清理服务器的时候,注意不是仅仅将服务器 webApps 下面的应用删掉就好了,还要注意应用是否产生了一些文件在 conf 下面的配置中 ;要一并删掉 ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值