一种简单JDBC连接池的实现(二)

3.简单JDBC连接池的实现

根据第二章中原理机制,Snap-ConnectionPool(一种简单快速的连接池工具)按照部分的JDBC规范,实现了连接池所具备的对数据库资源有效管理功能。

3.1体系描述

在JDBC规范中,应用通过驱动接口(Driver Interface)直接方法数据库的资源。为了有效、合理地管理资源,在应用与JDBC Driver之间,增加了连接池: Snap-ConnectionPool.并且通过面向对象的机制,使连接池的大部分操作是透明的。参见下图,Snap-ConnectionPool的体系:

图中所示,通过实现JDBC的部分资源对象接口( Connection, Statement, ResultSet ),在 Snap-ConnectionPool内部分别产生三种逻辑资源对象: PooledConnection, PooledStatement和 PooledResultSet.它们也是连接池主要的管理操作对象,并且继承了JDBC中相应的从属关系。这样的体系有以下几个特点:

-透明性。在不改变应用原有的使用JDBC驱动接口的前提下,提供资源管理的服务。应用系统,如同原有的 JDBC,使用连接池提供的逻辑对象资源。简化了应用程序的连接池改造。

-资源封装。复杂的资源管理被封装在 Snap-ConnectionPool内部,不需要应用系统过多的干涉。管理操作的可靠性、安全性由连接池保证。应用的干涉(如:主动关闭资源),只起到优化系统性能的作用,遗漏操作不会带来负面影响。

-资源合理应用。按照JDBC中资源的从属关系,Snap-ConnectionPool不仅对Connection进行缓冲处理,对Statement也有相应的机制处理。在2.3已描述,合理运用Connection和Statement之间的关系,可以更大限度地使用资源。所以,Snap-ConnectionPool封装了Connection资源,通过内部管理PooledConnection,为应用系统提供更多的Statement资源。

-资源连锁管理。Snap-ConnectionPool包含的三种逻辑对象,继承了JDBC中相应对象之间的从属关系。在内部管理中,也依照从属关系进行连锁管理。例如:判断一个Connection是否超时,需要根据所包含的Statement是否活跃;判断Statement也要根据ResultSet的活跃程度。

3.2连接池集中管理ConnectionManager

ConnectionPool是Snap-ConnectionPool的连接池对象。在Snap-ConnectionPool内部,可以指定多个不同的连接池(ConnectionPool)为应用服务。ConnectionManager管理所有的连接池,每个连接池以不同的名称区别。通过配置文件适应不同的数据库种类。如下图所示:

通过ConnectionManager,可以同时管理多个不同的连接池,提供通一的管理界面。在应用系统中通过ConnectionManager和相关的配置文件,可以将凌乱散落在各自应用程序中的数据库配置信息(包括:数据库名、用户、密码等信息),集中在一个文件中。便于系统的维护工作。

时间: 2024-08-01 08:51:40

一种简单JDBC连接池的实现(二)的相关文章

一种简单JDBC连接池的实现(一)

1.前言 数据库应用,在许多软件系统中经常用到,是开发中大型系统不可缺少的辅助.但如果对数据库资源没有很好地管理(如:没有及时回收数据库的游标(ResultSet).Statement.连接 (Connection)等资源),往往会直接导致系统的稳定.这类不稳定因素,不单单由数据库或者系统本身一方引起,只有系统正式使用后,随着流量.用户的增加,才会逐步显露. 在b基于Java开发的系统中,JDBC是程序员和数据库打交道的主要途径,提供了完备的数据库操作方法接口.但考虑到规范的适用性,JDBC只提

spring 配置文件中dbcp连接池,jdbc连接池 引入 配置文件properties,但是不能用$符号引用里面的变量问题

spring 配置 注意红色字体 (1)懒加载要设为true,(2)引入配置文件  注意不能懒加载不能设为false,否则$不能引入配置文件中的变量 第一种配置 jdbc连接池 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3

HikariCP —— 另外一款高性能的 JDBC 连接池

HikariCP 是一个高性能的 JDBC 连接池组件.下图是性能的比较测试结果: 文章转载自 开源中国社区 [http://www.oschina.net]

tomcat jdbc 连接池 参数说明

##############################MySQL数据库连接驱动############################## #数据库连接URL url=jdbc:mysql://localhost:3306/grtg?useUnicode=true&characterEncoding=utf8 #数据库连接驱动 driver=com.mysql.jdbc.Driver #数据库连接用户名 username=root #数据库连接密码 password=root ######

100分求解:通过jdbc连接池访问外部db第一次检索速度特慢

问题描述 哪位高人遇到过这个问题啊,我们用weblogic配置jdbc链接池访问oracle,但是每次weblogic启动后第一次访问的sql都非常慢比如程序一个10个sql,这些sql第一次运行都要超过10秒,第2次就2秒以下了.oracle是10g的.weblogic还配置了其他db的链接池,都没有问题,唯独外部db的池有这个问题.因为这个外部db是在别的地方,不属于我们管理,也无法看执行计划,我们只知道都是view,而且view还是比较复杂的.是否有结果集缓存的原因,使得第一次非常慢哪?但

websphere如何配置第三方jdbc连接池

问题描述 小弟新手请教websphere8如何配置第三方的连接池?比如Druid连接池是这样么?1.需要jar包(druid.jarojbc6.jar)拷到服务器目录A下然后在资源-->jdbc-->jdbc提供程序-->新建名称叫B.类路径写上边的目录A实现类名是对应的提供程序(比如:com.alibaba.druid.pool.DruidDataSource)然后确定.2.在数据源配置页新建数据源提供程序写上B其它默认url写数据库连接url只不过在属性上要定制根据自己的连接池情况请

weblogic JDBC 连接池监控疑问

问题描述 如图,如果长时间,ConnectionsTotalCount大于100,也就是大于设置的容量CurrentCapacity,会有什么问题.对系统有什么影响?前一段子,公司的系统缓慢.被客户投诉.原因一直查不出来.系统缓慢的时候,ConnectionsTotalCount总是104,但是ActiveConnectionCurrentCount却没有超100.

JDBC数据源连接池配置及应用_java

使用JDBC建立数据库连接的两种方式: 1.在代码中使用DriverManager获得数据库连接.这种方式效率低,并且其性能.可靠性和稳定性随着用户访问量得增加逐渐下降. 2.使用配置数据源的方式连接数据库,该方式其实质就是在上述方法的基础上增加了数据库连接池,这种方式效率高. 数据源连接池的方式连接数据库与在代码中使用DriverManager获得数据库连接存在如下差别: 1)数据源连接池的方式连接数据库是在程序中,通过向一个JNDI(Java Naming and  Directory In

14-数据库连接池和jdbc优化

一.数据库连接池 1. 什么是连接池 传统的开发模式下,Servlet处理用户的请求,找Dao查询数据,dao会创建与数据库之间的连接,完成数据查询后会关闭数据库的链接. 这样的方式会导致用户每次请求都要向数据库建立链接而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出.宕机.   解决方案就是数据库连接池 连接池就是数据库连接对象的一个缓冲池 我们可以先创建10个数据