ad

打开《Java+EE应用开发实践教程》_读懂新的设计思路_2.2 实验六 JDBC 与数据库连接池

admin 68 2023-10-25

【摘要】 本书摘自《Java+EE应用开发实践教程》一书中第2章,第2节,由涂祥著。

实验六 JDBC 与数据库连接池

一、实验目的

1.进一步掌握操纵数据库的基本 SQL 语句。

2.掌握数据库连接池的基本概念。

打开《Java+EE应用开发实践教程》_读懂新的设计思路_2.2 实验六 JDBC 与数据库连接池

3.了解常用的数据库连接池技术,以及其特点。

4.掌握JDBC 实现数据库连接池的基本步骤和方法。

5.掌握JDBC 数据库连接池的 Web 应用程序开发方法。

二、基础知识

1.数据库连接池概念。

数据库连接池就是负责管理、分配和回收数据库连接的一种技术。该技术初始化 了一定数量的数据库连接,允许进程重复使用这些已经建立好的数据库连接,从而避免 建立数据库连接时的性能消耗。而且,使用后的数据库连接可直接放归连接池,由连接 池统一管理,用于其他连接请求,由此提高数据库访问效率和访问速度。

2.数据库连接池技术。

主流数据库连接池技术包括:C3P0、DBCP、Tomcat Jdbc Pool、BoneCP、Proxool、 Druid等。其中C3P0 是开源的JDBC 连接池,实现了数据源和JNDI 绑定,目前使用它 的开源项目有 Hibernate、Spring等;DBCP 是一个依赖 Jakarta commons—pool 对象池 机制的数据库连接池,Tomcat7.0 之后版本使用的连接池组件就是DBCP;Tomcat Jdbc Pool是 Tomcat7.0 之前使用的连接池组件;BoneCP 是一个快速,开源的数据库连接 池;Proxool是一个Java SQL Driver驱动程序,提供了对选择的其他类型的驱动程序的 连接池封装,可以方便移植到现存的代码中;Druid是目前公认的较好的数据库连接池, 在功能、性能、扩展性方面,都超过其他数据库连接池。

3.Druid 连接池。

Druid是一个JDBC 组件,提供了一个高效、功能强大、扩展性良好的数据库连接池。 它包括三个部分: 一个基于Filter—Chain模式的插件体系、DruidDataSource 高效可管 理的数据库连接池,以及 SQL Parser。

同时,Druid可对数据库的访问性能实施监控,并内置了一个功能强大的StatFilter 插件,能够详细统计SQL 的执行性能,这对于线上分析数据库访问性能有所帮助。另 外,Druid 提供了数据库密码加密, DruidDruiver 和 DruidDataSource 都支持 PasswordCallback。 而且,如果你要对JDBC 层有编程的需求,可以通过Druid 提供的 Filter机制,很方便编写 JDBC 层的扩展插件。

三、实验步骤

1.新建一个 Web 工程,在Tomcat 中使用Druid连接池方式实现Web 数据库访问。

(1)在Eclipse中,新建一个 Web 工程 p06 1。在网上下载 Druid 的最新版本的jar 包,实验使用的版本是druid-1.1.9.jar,将该jar包连同MySQL 数据库驱动包一起导

入到本工程。同时在本工程的META-INF 目录下创建一个 context. xml文件,用于配

置数据库连接池WebContent

META-INF

MANIFEST.MF

√ WEB-INF

lib

druid- 1.1.9jar

mysql-connector-java-5.1.7-binjar

× web.xml

图 6 - 1 导入开发包

(2)打开 context.xml 文件,在 context.xml 文件中加入JNDI 的配置信息,如下所 示代码。

version="1.0"encoding="UTF-8"?>

xml>

name="jdbc/MysqlDataSource"

factory="com.alibaba. druid. pool. DruidDataSourceFactory"

auth="Container"

type="javax. sql. DataSource"

driverClassName="com.mysql.jdbc. Driver"

url="jdbc;mysql://localhost:3306/edu db? characterEncoding=utf-8"

username="root"

password="123456"

maxActive="50'

maxWait="10000"

removeabandoned="true"

removeabandonedtimeout="60"

logabandoned="false"

filters="stat"/>

根据配置好的各项参数,连接池的工作原理如下。连接池在初始化时会创建基于 initialSize参数的连接,当有数据库操作请求时,会从池中取出一个连接;如果当前池中 正在使用的连接数等于maxActive, 则会等待一段时间,等待其他操作释放掉某一个连 接,如果这个等待时间超过了maxWait, 则会报错;如果当前正在使用的连接数没有达 到 maxActive, 则先判断当前是否有空闲连接,如果有则直接使用空闲连接,如果没有则 新建立一个连接;在连接使用完毕后,不是将其物理连接关闭,而是将其放入池中等待

其他数据库操作时复用;

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 [email protected] 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《零基础Python 从入门到精通》_让你学得轻松_16.3.2 服务端
下一篇:打开《Java+EE应用开发实践教程》_读懂新的设计思路_3.1 实验九 MVC 与 DAO 开发模式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×