- 167 -
第04期2020年2月No.04February,2020
数据库(Database )是按照数据结构来组织、存储和管理数据的仓库,在Java 开发中,不可避免地要使用数据库来存储和管理数据。传统的数据库连接是使用Java 数据库连接(Java Database Connectivity ,JDBC )技术,每操作一次数据库都会执行一次创建和断开连接的操作,这种频繁的操作十分影响数据库的访问效率,并且增加了代码量,所以在实际开发中通常会使用连接池技术来解决这些问题。1    数据库连接池的工作原理
数据库连接池(Database Connection Pool ,DBCP )是应用程序启动时系统建立足够的数据库连接,并将这些连接组成一个连接池。每次应用程序请求数据库连接时,无需新建连接,而是从连接池中取出已有的连接使用,使用完毕后,不必关闭数据库连接,而是直接将连接归还给连接池。这样虽然会占用一定的内存空间,但是却大大节省了数据库连接的时间,体现了以空间换时间的思想。数据库连接池的工作原理主要由以下3部分组成。1.1  建立连接池
在系统初始化时,利用Vector ,Stack 等容器建立静态的数据库连接池,根据配置创建连接并放置在连接池中,这些连接是不能随意关闭的,以后所使用的连接都是从该连接池中获取的,这样就可以避免反复建立和关闭连接造成的开销。1.2  分配、释放连接
连接池中的连接由连接池管理器统一管理。当客户请求数据库连接时,首先看连接池中是否有空闲连接,即尚未分配出去的连接。如果存在空闲连接,则把该连接分配给客户,并标记该连接为已分配。若连接池中没有空闲连接,就在已经分配出去的连接中寻一个合适的连接给客户,此时该连接在多个客户间复用。
当客户释放连接时,可以根据该连接是否被复用进行不同的处理。如果没有其他使用者,就放入到连接池中,而不是被关闭。如果有其他使用者,则当前客户释放该连接,其他客户可以继续使用。
1.3  配置连接
连接池中到底要放置多少个连接,以及连接耗尽后该如何处理是配置策略要关注的问题。一般的配置策略是,开始时,根据具体的应用需求,给出一个初始的连接池中连接的数目以及一个连接池可以扩张到的最大连接数目。连接池管理器在创建、分配、释放连接时都需要符合配置要求,当客户请求超过最大连接数目时,新请求可能需要一个短暂的等待过程。
2    数据库连接池的使用(以DBCP连接池为例)
主流的数据库连接池有DBCP ,C3p0,Tomcat Jdbc Pool ,BoneCP ,Druid 。其中,DBCP 是apache 上的一个Java 连接池项目。下面以DBCP 连接池为例说明数据库连接池的使用[1]。
2.1  导入jar 包
单独使用DBCP 需要导入2个包:com mon s-dbc p.jar,commons-pool.jar ,如果是Maven 项目则需要配置Maven 依赖,即在配置文件l 中引入其jar 包的坐标。
<dependency>
<groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.4</version></dependency><dependency>
<groupId>commons-pool</groupId><artifactId>commons-pool</artifactId><version>1.6</version></dependency>2.2  创建数据源
当使用DBCP 数据源时,首先要创建数据源对象,常用的创建方式有两种。2.2.1  纯Java 代码方式
第一步:创建BasicDataSource 类对象
BasicDataSource datasource=new BasicDataSource();
作者简介:刘翠霞(1975— ),女,河北邯郸人,高级工程师,信息系统项目管理师,硕士;研究方向:高职教育,计算机软件,数据库。
摘  要:在Java 开发中,不可避免地要使用数据库来存储和管理数据。尤其是在Java Web 应用程序中,往往会有很多用户同时
连接和访问数据库,对数据库连接的管理将直接影响到程序的性能和用户的体验。使用数据库连接池能够加快数据库连接的速度,提高服务器程序的性能,降低系统资源的消耗,是对数据库连接的一种较为有效的管理手段。文章介绍了数据库连接池的原理与使用方法。关键词:Java ;Java 数据库连接;数据库连接池Java数据库连接池的原理与应用
刘翠霞
java的jdbc连接数据库(石家庄财经职业学院,河北  石家庄  050061)
无线互联科技
Wireless Internet Technology

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。