连接池DBCP的简单使用
DBUtil工具类的设计
私有化构造方法,防止被new(很重要)
暴露一些public的方法给外界调用(很重要)
有这么两步之后,工具类基本就完成了
·为什么要使用连接池?
在应用中,与数据建立连接,操作数据库,关闭连接。这是一件很耗费资源的。为了合理的使用资源,诞生了连接池这个东西
1.什么是连接池
连接池,顾名思义 存放连接的池子。其作用就是连接池与数据库建立长久的连接,当我们需要操作数据库的时候,不再是去主动建立连接,而是去连接池中获取链接,操作完成后,释放当前连接,资源回到连接池中,资源再利用!如此的效率提升了,但是问题来了
2.连接池中可以存放多少连接?当前连接被使用完毕后该怎么办?
连接池中的连接在第一次和数据库连接的时候已经申请了一些数量的连接。当前连接超过最大连接数时,连接池可以再一次向数据申请连接,此操作在配置文件中配置即可
连接池配置文件 dhcp.properties driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/shopping username= password= #<!-- 初始化连接 --> dataSource.initialSize=10 #<!-- 最大空闲连接 --> dataSource.maxIdle=20 #<!-- 最小空闲连接 --> dataSource.minIdle=5 #最大连接数量 dataSource.maxActive=50 #是否在自动回收超时连接的时候打印连接的超时错误 dataSource.logAbandoned=true #是否自动回收超时连接 dataSource.removeAbandoned=true #超时时间(以秒数为单位) dataSource.removeAbandonedTimeout=180 #<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 --> dataSource.maxWait=1000 工具类代码
DBUtil.java
import java.io.InputStream; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSourceFactory; import com.store.shopping.exception.DBException; public class DBUtil { private static DataSource dataSource; //私有化构造方法 private DBUtil() { } static { /** JDBC操作数据库: 口诀(思路): 贾琏欲执事. 步骤: 1.加载注册驱动. 2.获取连接对象:Connection. 3.获取语句对象. 4.执行SQL语句. 5.释放资源. */ // 读取资源文件 try { Properties properties = new Properties(); InputStream inputStream = Thread.currentThread() .getContextClassLoader().getResourceAsStream("dhcp.properties"); properties.load(inputStream);//加载资源 //使用工厂生产datasource dataSource = BasicDataSourceFactory.createDataSource(properties); } catch (Exception e) { throw new DBException("文件没找到:dhcp.properties"); } } //暴露给外界调用的方法 public static DataSource getDataSource () { return dataSource ; }
测试代码
@Test public void testConnection() throws Exception { System.out.println(DBUtil.getDataSource().getConnection()); }
测试结果
jdbc:mysql://localhost:3306/shopping, UserName=sa@localhost, MySQL Connector Java
本文出自 “我的JAVA之路” 博客,请务必保留此出处http://heartofthesea.blog.51cto.com/7651104/1631344
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。