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

【简介】

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

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

【原理】

    早期:

    

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

    连接池

    

【代码】

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

转载于:https://www.cnblogs.com/jiawenjing/p/6677140.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值