Excel不相邻列如何打印在一起-英雄云拓展知识分享
135
2023-10-25
【摘要】 本书摘自《Java+EE应用开发实践教程》一书中第2章,第2节,由涂祥著。
实验六 JDBC 与数据库连接池
一、实验目的
1.进一步掌握操纵数据库的基本 SQL 语句。
2.掌握数据库连接池的基本概念。
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 的配置信息,如下所 示代码。
xml 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, 则先判断当前是否有空闲连接,如果有则直接使用空闲连接,如果没有则 新建立一个连接;在连接使用完毕后,不是将其物理连接关闭,而是将其放入池中等待
其他数据库操作时复用;
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~