【Java进阶】——初识数据库连接池

来源:互联网 发布:将乐教育网络办公系统 编辑:程序博客网 时间:2024/05/16 05:09

【简介】

    数据库连接池:程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的链接进行申请,使用,释放。

    相比之前的程序连接,减少了数据库的打开关闭次数,从而减少了程序响应的时间。在需要数据库连接的时候直接在数据库连接池中拿取数据连接,进行操作,等使用完成之后将资源放回到数据连接池中,等待下个任务的使用。

【原理】

    早期:

    

    数据库连接”是一种稀缺的资源,为了保障网站的正常使用,应该对其进行妥善管理。其实我们查询完数据库后,如果不关闭连接,而是暂时存放起来,当别人使用时,把这个连接给他们使用。就避免了一次建立数据库连接和断开的操作时间消耗。

    连接池

    

【代码】

    关于数据库连接池有很多种,小编初步使用的是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:其实连接池也是设计模式中享元模式的一种应用方式。

0 0
原创粉丝点击