学习目标:
1.数据库连接池
2.DBUtils工具
学习内容:
1.数据库连接池
1什么是数据库连接池
在JDBC编程中,每次创建和断开 Connection 对象都会消耗一定的时间和IO资源。这是因为在Java程序与数据库之间建立连接时,数据库端要验证用户名和密码,并且要为这个连接分配资源,Java程序则要把代表连接的java、sql. Connection 对象等加载到内存中,所以建立数据库连接的开销很大,尤其是在大量的并发访问时。假如某网站一天的访问量是10万,那么,该网站的服务器就需要创建、断开连接10万次,频繁地创建、断开数据库连接势必会影响数据库的访问效率,甚至导致数据库崩溃。
为了避免频繁地创建数据库连接,数据库连接池技术应运而生。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用现有的数据库连接,而不是重新建立。接下来,通过一张图来简单描述应用程序如何通过连接池连接数据库。
2.DataSource 接口
为了获取数据库连接对象( Connection ),JDBC提供了javax. sql. Data Source接口,它负责与数据库建立连接,并定义了返回值为 Connection 对象的方法,具体如下。
Connection getConnection ()
-Connection getConnection (String username,String password)
上述两个重载的方法都能用来获取 Connection 对象。不同的是,第1个方法是通过无参的方式建立与数据库的连接,第2个方法是通过传入登录信息的方式建立与数据库的连接。
接口通常都会有其实现类,javax. squ. Data Source接口也不例外,通常习惯性地把实现了javax. sql. Data Source接口的类称为数据源,顾名思义,数据源即数据的来源。在数据源中存储了所有建立数据库连接的信息。就像通过指定文件名称可以在文件系统中找到文件一样,通过提供正确的数据源名称,也可以找到相应的数据库连接。
数据源中包含数据库连接池。如果数据是水,数据库就是水库,数据源就是连接到水库的管道,终端用户看到的数据集是管道里流出来的水。一些开源组织提供了数据源的独立实现,常用的有DBCP数据源和C3P0数据源。接下来的小节中,将会对这两种数据源进行详细的讲解。
3.DBCP数据源
DBCP是数据库连接池( DataBaseConnectionPool )的简称,是Apache组织下的开源连接池实现,也是Tomcat服务器使用的连接池组件。单独使用DBCP数据源时,需要在应用程序中导入两个JAR包:
1. commons-dbcp. jar包
commons-dbcp. jar包是DBCP数据源的实现包,包含所有操作数据库连接信息和数据库连接池初始化信息的方法,并实现了 DataSource 接口的 getConnection ()方法。
2. commons-pool. jar包
commons-pool. jar包是DBCP数据库连接池实现包的依赖包,为commons-dbcp. jar包中的方法提供了支持。可以这么说,没有该依赖包,commons-dbcp. jar包中的很多方法就没有办法实现。
这两个JAR包可以在Apache官网地址“ http://commons.apache.org/proper/ ”中查询下载到。其中,commons-dbcp. jar中包含两个核心的类,分别是 BasicDataSourceFactory 和 BasicDataSource ,它们都包含获取DBCP数据源对象的方法
1.通过 BasicDataSource 类直接创建数据源对象
在项目chapter10中导入mysql-connector-java-5.0.8-bin.jar 、commons-dbcp-1.4. jar以及commons-pool-1.6. jar 3个JAR包,并发布到类路径下,然后在项目的src日录下创建包cn.itcast.chapter10. example,并在该包下创建一个Example01类
结果:
2.通过读取配置文件创建数据源对象
除了使用 BasicDataSource 直接创建数据源对象外,还可以使用 BasicDataSourceFactory 工厂类读取配置文件,创建数据源对象,然后获取数据库连接对象。
(1)在chapter10项目的src目录下创建 dbopconfig . properties 文件,该文件用于设置数据库的连接信息和数据源的初