建立数据库连接耗时耗费资源,一个数据库服务器能够同时建立的连接数也是有限的,在大型的Web应用中,可能同时会有成百上千的访问数据库的请求,如果Web应用程序为每一个客户请求分配一个数据库连接,将导致性能的急剧下降。
数据库连接池的意义在于,能够重复利用数据库连接(有点类似线程池的部分意义),提高对请求的响应时间和服务器的性能。
连接池中提前预先建立了多个数据库连接对象,然后将连接对象保存到连接池中,当客户请求到来时,直接从池中取出一个连接对象为客户服务,当请求完成之后,客户程序调用close()方法,将连接对象放回池中
Druid介绍
druid为阿里巴巴的数据源,(数据库连接池),集合了c3p0、dbcp、proxool等连接池的优点,还加入了日志监控,有效的监控DB池连接和SQL的执行情况。
DRUID的DataSource类为:com.alibaba.druid.pool.DruidDataSource。
其他配置参数如下:
spring+druid的典型配置
下面展示一些 内联代码片
。
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="filters" value="stat,log4j" />
</bean>
关于Druid连接达梦的常见出错
1.报如下的错误:
16:16:50,872 ERROR main pool.DruidDataSource:658 - dataSource init error java.sql.SQLException: unkow jdbc driver : jdbc:dm://localhost:5236
atcom.alibaba.druid.util.JdbcUtils.getDriverClassName(JdbcUtils.java:416)
报错原因:
是因为Druid 1.0.11及以前版本,不能省略driverClassName参数否则出现 unkow jdbc driver 异常
解决方法:
升级到最新版,如1.1.20(推荐)
或 配置 driverClassName=dm.jdbc.driver.DmDriver
2.报错信息如下:
16:01:02,007 ERROR main pool.DruidDataSource:983 - {dataSource-1} init error
java.lang.IllegalStateException: dbType not support : dm, url
jdbc:dm://localhost:5236
at com.alibaba.druid.wall.WallFilter.init(WallFilter.java:167)
报错原因:
配置了wall Filter(防火墙过滤),报异常: dbType not support
解决方法:
去掉wall配置