JDBC数据库连接池技术
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDBC数据库连接池技术相关的知识,希望对你有一定的参考价值。
在JDBC中,获得连接或释放资源是非常消耗系统资源的两个过程,为了解决此类性能问题,通常采用连接池技术,来共享连接。这样我们就不需要每次都创建连接、释放连接了,这些操作都交给了连接池。
用池的概念来管理Connection,这样可以重复使用Connection。有了连接池以后就不用自己亲自创建连接而是通过连接池来获得Connection对象。当使用完Connection之后,调用Connection的close()方法不是真的将连接关闭,而是把Connection归还给连接池。连接池就可以继续保留这个Connection给其他用户使用了。
Java为了数据库连接池提供了公共的接口:javax.sql.DataSource,各个厂商需要让自己的连接池来实现这个接口,这样应用程序可以方便的切换不同厂商的连接池。有三个常用的连接池:DBCP、C3P0和druid
DBCP连接池
DBCP是一个开源的连接池,是Apache Common成员之一,在企业开发中也比较常见,tomcat内置的连接池。
在使用DBCP之前,要引入2个包:commons-dbcp.jar和commons-pool.jar。
1 package com.dbcp.demo; 2 import java.sql.Connection; 3 import java.sql.PreparedStatement; 4 import java.sql.SQLException; 5 import javax.sql.DataSource; 6 import org.apache.commons.dbcp.BasicDataSource; 7 8 public class DemoDBCP { 9 // 连接数据库的参数 10 public static final String DRIVER = "com.mysql.jdbc.Driver"; 11 public static final String URL = "jdbc:mysql://localhost:3306/mybatis"; 12 public static final String USERNAME = "root"; 13 public static final String PASSWORD = "123456"; 14 15 // 创建连接池 16 public static BasicDataSource dataSource = new BasicDataSource(); 17 18 // 静态代码块 19 static { 20 // 对连接池对象进行基本的配置 21 dataSource.setDriverClassName(DRIVER); // 待连接的数据库的驱动 22 dataSource.setUrl(URL); // 指定要连接的数据库的地址 23 dataSource.setUsername(USERNAME); // 指定要连接的用户名 24 dataSource.setPassword(PASSWORD); // 指定要连接数据库的密码 25 26 // 这里应该还有设置连接数的语句 27 } 28 29 // 返回连接池对象 30 public static DataSource getDataSource() { 31 return dataSource; 32 } 33 34 // 测试连接池 35 public static void main(String[] args) throws SQLException { 36 // 获得连接池 37 DataSource dataSource = DemoDBCP.getDataSource(); 38 // 从连接池中获得连接 39 Connection conn = dataSource.getConnection(); 40 // 准备sql语句 41 String sql = "insert into person (LastName, FirstName, Address, Age) values" + 42 " (?, ? ,?, ?)"; 43 // 获得PresparedStatement对象 44 PreparedStatement pstmt = conn.prepareStatement(sql); 45 // 设置参数 46 pstmt.setString(1, "张"); 47 pstmt.setString(2, "三"); 48 pstmt.setString(3, "埃塞俄比亚"); 49 pstmt.setInt(4, 24); 50 // 执行CRUD操作 51 pstmt.execute(); 52 // 关闭连接 53 conn.close(); 54 } 55 }
DBCP常见的配置选项
必须的配置项
driverclassName 数据库驱动名称
url 数据库的地址
username 用户名
password 密码
基本项
maxActive 最大连接数
initialSize 连接池中初始化多少个Connection连接对象
扩展项
maxWait 超时等待时间以毫秒为单位
以上是关于JDBC数据库连接池技术的主要内容,如果未能解决你的问题,请参考以下文章