小言_互联网的博客

Java Web程序设计——数据库连接池与DBUtils工具

459人阅读  评论(0)

Java Web程序设计——数据库连接池与DBUtils工具

数据库连接池

什么是数据库连接池
  • 在使用JDBC编程时,每次访问数据库都需要创建对象,访问完毕后也需要断开连接(销毁对象)。为了避免频繁的创建数据库连接,提出来数据库连接池技术。
  • 应用程序就不需要创建和断开连接对象,而是交给数据库连接池管理。
  • 数据库连接池断开,不是销毁对象,而是把连接对象归还给连接池。
  • 数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用现有的数据库连接,而不是重新建立。
  • 采用数据库连接池操作数据库的示意图:
  • 优点:通过数据库连接池管理连接对象,减少了数据库连接对象的创建和销毁,提高了数据库的访问效率。
  • 数据库连接池基本参数:
  1. 初始化大小:数据库连接池里面初始的连接对象个数
  2. 最大连接数:数据库连接池里面最大的连接对象个数
  3. 最大等待时间:用户通过连接池取连接对象时,需要等待的世界
  4. 最大空闲连接:数据库连接池里面,在用户访问趋于稳定时,最大空闲连接个数
  5. 最小空闲连接:在用户访问趋于顶峰时,数据库连接池里面剩余的最小连接对象个数。

DataSource接口

  • 为了获取数据库连接对象(Connection),JDBC提供了javax.sql.DataSource接口,它负责与数据库建立连接,并定义了返回值Connection对象的方法:
Connection getConnection()
Connection getConnection(String username,String password)
  • 习惯性的把实现了javax.sql.DataSource接口的类称为数据源,即数据的来源。在数据源中存储了所有建立数据库连接的信息。

DBCP数据源

  • DBCP数据源连接池(DataBase Connection Pool),是由apache组织提供的数据库连接池技术,开源免费。
  • 在项目开发中,使用DBCP的基本步骤:
  1. 前提导入DBCP的jar包:commons-dbcp.jar,commons-pool.jar
  2. DBCP获取连接对象:设置连接参数。四个连接参数:driverName,url,username,password

例:

package chapter10;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSource;


public class Example01 {
	public static DataSource ds = null;
	static {
		//获取DBCP数据源实现类对象
		BasicDataSource bds = new BasicDataSource();
		//设置连接数据库所需要的四个连接参数
		bds.setDriverClassName("com.mysql.jdbc.Driver");
		bds.setUrl("jbdc:mysql://localhost:3306/jdbc");
		bds.setUsername("root");
		bds.setPassword(null);
		//设置连接池参数
		bds.setInitialSize(5);  //初始化参数
		bds.setMaxIdle(10); 
		ds = bds;
	}
	public static void main(String[] args) throws SQLException {
		//数据库连接池获取连接对象
		Connection con = ds.getConnection();
		//获取连接参数
		DatabaseMetaData metaData = con.getMetaData();
		System.out.println(metaData.getURL());
		System.out.println(metaData.getUserName());
		System.out.println(metaData.getDriverName());
	}
}

  • BasicDataSource类的常用方法:

C3P0数据源

  • C3P0数据源是目前最流行的数据库连接池技术之一,它的性能更加优越,也提供了对后期数据框架hibernate很好的支持,它是开源免费的。
  • 在项目开发中,使用C3P0的基本步骤:
  1. 前提导入C3P0的jar包,提供了C3P0的核心类方法
  2. 设置连接参数:四个连接参数:driverName,url,username,password

例:

package chapter10;

import java.beans.PropertyVetoException;
import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class Example02 {
	public static DataSource ds = null;
	// 初始化C3P0数据源
	static {
		ComboPooledDataSource cpds = new ComboPooledDataSource();

		try {
			// 设置四个连接参数
			cpds.setDriverClass("com.mysql.jdbc.Driver");
			cpds.setJdbcUrl("jdbc:mysql://localhost:3306/jdbc");
			cpds.setUser("root");
			cpds.setPassword("");
			// 设置连接池参数
			cpds.setInitialPoolSize(5);
			cpds.setMaxPoolSize(15);
			ds = cpds;
		} catch (PropertyVetoException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
	}
	public static void main(String[] args) throws SQLException {
		System.out.println(ds.getConnection());
	}
}

  • ComboPooledDataSource类常用的方法:

DBUtils工具

  • DBUtils工具介绍:是由apache提供。是commons组件一员。是对jdbc简单的封装,减少操作数据库的代码。使用前,需要导入DBUtils的jar包。
QueryRunner类
  • QueryRunner类是DBUtils组件下的核心类,通常和ResultSetHandler接口配合使用,对jdbc代码进行了简单的封装,减少操作数据库大代码量。
  • QueryRunner类提供了集中常见的方法:
query(String,ResultSetHandler rsh,Object... params)
update(String sql,Object... params)
update(String sql)
ResultSetHandler接口
  • ResultSetHandler接口用于处理ResultSet结果集,它可以将结果集中的数据转为不同的形式。
  • ResultSetHandler提供了集中常见的实现类,具体如下:


转载:https://blog.csdn.net/DTRblank/article/details/106957407
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场