连接池概述: 管理数据库的连接, 作用: 提高项目的性能. 就是在连接池初始化的时候存入一定数量的连接,用的时候通过方法获取,不用的时候归还连接即可. 所有的连接池必须实现一个接口 javax.sql.DataSource接口 获取连接方法: Connection getConnection() 归还连接的方法就是以前的释放资源的方法.调用connection.close();
/** * TestDs.java * 测试简易连接池的功能 */ package com.datasource.my; import java.sql.Connection; public class TestDs { public static void main(String[] args) { // 创建连接池 MyDataSource ds = new MyDataSource() ; //获取连接 Connection conn = ds.getConnection() ; System.out.println(conn); //归还连接 ds.addBack(conn); } } /** * MyDataSource.java * 用一个LinkedList链表实现的一个连接池的存放、获取、归还操作 */ package com.datasource.my; import java.sql.Connection; import java.sql.SQLException; import java.util.LinkedList; import com.utils.JdbcUtils; /** * 简易的连接池 * @author 25367 * */ public class MyDataSource { static LinkedList<Connection> pool = new LinkedList<>() ; static { //初始化的时候需要放入3个连接 for(int i = 0; i<3; i++) { try { Connection conn = JdbcUtils.getConnection() ; pool.addLast(conn); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //从连接池中获取连接 public static Connection getConnection() { if(pool.isEmpty()) { // 再添加2个连接进去 for(int i = 0; i<3; i++) { try { Connection conn = JdbcUtils.getConnection() ; pool.addLast(conn); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } System.out.println("从连接池中获取一个连接."); return pool.removeFirst() ; } //归还连接的方法 public static void addBack(Connection conn) { // 将conn放入到list的最后面即可 pool.addLast(conn); System.out.println("连接已归还."); } }