【Java进阶】——初识数据库连接池
2017-10-13 00:00
190 查看
【简介】
数据库连接池:程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的链接进行申请,使用,释放。相比之前的程序连接,减少了数据库的打开关闭次数,从而减少了程序响应的时间。在需要数据库连接的时候直接在数据库连接池中拿取数据连接,进行操作,等使用完成之后将资源放回到数据连接池中,等待下个任务的使用。
【原理】
早期:数据库连接”是一种稀缺的资源,为了保障网站的正常使用,应该对其进行妥善管理。其实我们查询完数据库后,如果不关闭连接,而是暂时存放起来,当别人使用时,把这个连接给他们使用。就避免了一次建立数据库连接和断开的操作时间消耗。
连接池
【代码】
关于数据库连接池有很多种,小编初步使用的是Apachecommons-dbcp 连接池。小编封装了一个数据库连接池的工具类,在程序中解决数据库连接资源的问题。/** * @Title: JDBCUtils.java * @Package cn.itcast.gjp.tools * @Description: 获取数据库连接的工具类 实现连接 * @author 贾文静 * @date Apr 5, 2017 4:52:57 PM * @version V1.0 * Update Logs: * **************************************************** * Name: * Date: * Description: ****************************************************** */ package cn.itcast.gjp.tools; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSource; /** * @ClassName: JDBCUtils * @Description: 获取数据库连接的工具类 实现连接池,dbcp连接池 * @author 贾文静 * @date Apr 5, 2017 4:52:57 PM * */ public class JDBCUtils { // 创建BasicDataSource对象 private static BasicDataSource datasource = new BasicDataSource(); // 静态代码块,实现必要参数设置 static { //要使用的JDBC驱动程序的完全限定的Java类名称 datasource.setDriverClassName("com.mysql.jdbc.Driver"); //要传递给我们的JDBC驱动程序以建立连接的连接URL datasource.setUrl("jdbc:mysql://localhost:3306/gjp"); //要传递给我们的JDBC驱动程序以建立连接的连接用户名 datasource.setUsername("root"); //要传递给我们的JDBC驱动程序以建立连接的连接密码 datasource.setPassword("123"); //设置可以同时分配的活动连接的最大数量 datasource.setMaxActive(10); //设置池中可重新连接空闲的最大连接数 datasource.setMaxIdle(5); //设置池中空闲连接的最小数量 datasource.setMinIdle(2); //设置连接池的初始大小 datasource.setInitialSize(10); } public static DataSource getDataSource() { return datasource; } }
其实这个部分可以放到配置文件中,因为其中有数据库的一些内容,为了灵活性,还是建议放到配置文件中。
【问题】
其实使用数据库连接池也会带来一定的问题。1、并发问题
2、多数据库服务器和多用户
3、事务处理
4、连接池的分配与释放
5、连接池的配置和维护
【总结】
如何利用连接池达到优化程序的目的,减少其所带来的负面影响,还是需要不断提高自己技能来达到。PS:其实连接池也是设计模式中享元模式的一种应用方式。相关文章推荐
- 【Java进阶】——初识数据库连接池
- JVM进阶(十四)——初识JAVA 类加载机制
- Java进阶(五十四)初识JAVA类加载机制
- Java进阶(五十四)初识JAVA类加载机制
- Java进阶(五十四)初识JAVA类加载机制
- JVM进阶(二)——初识JAVA堆
- JVM进阶(十四)——初识JAVA 类加载机制
- 【Java进阶】Java反射机制初识
- Java进阶:JNI使用技巧点滴
- java 数据库连接池
- java笔记——初识面向对象05接口
- Java多线程知识点总结——进阶篇(十一) 之 守护线程(后台运行)
- Java框架介绍:Quartz从入门到进阶(图)
- JAVA进阶4.8——Vector和Stack
- [Java 进阶]Java中的国际化
- 第一篇 初识JAVA WebService
- java进阶(九)------图片跨域显示---服务端获取图片显示在jsp中
- Java基础---进阶练习(二十八)
- Java进阶(四十七)Socket通信
- Java jdbc数据库连接池总结!