浅谈JDBC和数据库连接池

浅谈JDBC和数据库连接池

一、JDBC的概念

JDBC,全称"Java Database Connectivity",意为"java与数据库的连接",是java中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。jdbc接口的具体方法由各大数据库厂商去实现,即数据库驱动,开发人员无需理会具体实现方法,只需学会调用相应接口的方法即可。

要使用jdbc,需要导入相应数据库的驱动包


二、JDBC使用步骤

  1. 导入要操作的数据库的驱动包

  2. 加载、注册数据库驱动(以mysql数据库为例)

    Class.forName("com.mysql.jdbc.Driver");
    
  3. 获取jdbc与数据库的连接对象

    Connection conn = DriverManager.getConnection(url,username,password);//url是数据库地址
    
  4. 创建执行sql语句的对象(负责把sql语句送到数据库去给数据库编译)

    1. statement对象 (不安全,有sql注入风险)
    Statement st = conn.createStatement();
    

    ​    2.preparedStatement对象 (安全,用得较多)

    PreparedStatement pst = conn.prepareStatement(String sql);//预编译 sql语句待传参数用占位符?替换
    
  5. 处理结果

    1. statement对象

      int num = st.executeUpdate(String sql);//执行增删改方法,返回数据库受影响行数
      ResultSet rs = st.executeQuery(String sql);//执行查询方法,放回查询结果 ResultSet是链表结构
      
    2. preparedStatement对象

      String sql = "selet * from user where id = ?";
      pst.setInt(1,20);//第一个参数表示给第一个?传值,第二个参数表示具体值
      int num =pst.executeUpdate()//执行增删改方法,返回数据库受影响行数  注意,括号内不能传参数
      ResultSet rs = st.executeQuery(String sql);//执行查询方法,放回查询结果 ResultSet是链表结构
      
  6. 释放jdbc对象的连接 (顺序和创建时刚好相反)

    rs.close();
    pst.close();
    conn.close();
    

三、数据库连接池

       传统应用中每个用户想要操作数据库,都需要建立一个与数据库的连接,操作完毕之后再断开连接,这对于系统开销其实是很大的,数据库连接池便应运而生。"数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个"这是百度百科给的概念。通俗来讲,可以理解为程序创建了一个池子,然后事先创建了很多connection对象,放在这个池子里面,当用户需要时直接从池子中取,使用完释放连接时并不销毁这个connection对象,而是把它放回连接池里,以供其他用户使用这样可以大大节省系统资源的开销,提高系统性能。

       数据库连接池底层是实现了一个叫DataSource的接口。 用户可以自定义连接池的最大连接数和最小连接数、超时等待时间等属性,不设置则采用默认值。当连接供不应求(也就是请求连接数大于池子中连接总数)时,用户需要排队等待。

如今流行的数据库连接池技术有很多,主流的有Druid(阿里的),HiKariCP(号称性能最好),dbcp(apache出品),c3p0。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值