美文网首页
2.自定义连接池的实现

2.自定义连接池的实现

作者: Michael_林 | 来源:发表于2017-04-03 19:36 被阅读152次

常用的连接池技术包括:DBCP | C3P0,都是十分成熟稳定的连接池技术。本文目的是通过一个自定义的连接池来模仿连接池的实现。
该自定义连接池实现思路:

  • 1.实现java.sql.Connection 的部分方法,并对传入的连接对象进行包装;
  • 2 使用LinkedList来模拟一个连接池,该连接池实例化的时候会创建3个连接,如果连接不够用,会自增2个,当连接使用完成则调用close方法放回;
    详细代码如下:

实现java.sql.Connection接口,实现的部分如下:

import java.sql.Array;
public class ConnectionWarp implements Connection {
private Connection con;
private LinkedList<Connection> pool;

public ConnectionWarp(Connection con){
this.con = con;
}
public ConnectionWarp(Connection con, LinkedList<Connection> pool){
this.con = con;
this.pool = pool;
}
//要加强的方法
@Override
public Statement createStatement() throws SQLException {

  return con.createStatement();

}

@Override
public PreparedStatement prepareStatement(String sql) throws SQLException {

  return con.prepareStatement(sql);

}
@Override
public void close() throws SQLException {
System.out.println("放回连接前:" + pool.size());
pool.addLast(this);
System.out.println("放回连接后;" + pool.size());

  System.out.println("已将连接放回");

}

@Override
public <T> T unwrap(Class<T> iface) throws SQLException {

  return con.unwrap(iface);

}
}

自定义连接池

import java.sql.Connection;
public class MyDataSource {

//1.定义一个连接池
static LinkedList<Connection> pool = new LinkedList<Connection>();

//初始化连接池,放入3个连接
static {
for(int i=0; i<3; i++){
Connection con;
try {
con = JdbcUtils.getConnection();
pool.add(con);
} catch (SQLException e) {

          e.printStackTrace();
      }
  }

}

//获取连接
@SuppressWarnings("resource")
public Connection getConnection(){
if(pool.isEmpty()){
for(int i=0; i<2; i++){
Connection con;
try {
con = JdbcUtils.getConnection();
pool.add(con);
} catch (SQLException e) {

              e.printStackTrace();
          }
      }
  }
  Connection conn = pool.remove();
  ConnectionWarp connWarp = new ConnectionWarp(conn, pool);
  return connWarp;

}

}

相关文章

  • JAEE学习笔记(19)事物与连接池

    目录 1.事务2.连接池 1.连接池概念 2.自定义连接池 3.开源连接池(c3p0) 复习: =========...

  • 2.自定义连接池的实现

    常用的连接池技术包括:DBCP | C3P0,都是十分成熟稳定的连接池技术。本文目的是通过一个自定义的连接池来模仿...

  • DBUtiles的使用

    自定义连接池: 学会用resourcebundle来加载properties文件 运用连接池的技术 连接池技术原理...

  • JDBC 进阶——连接池

    本文包括传统JDBC的缺点连接池原理自定义连接池开源数据库连接池DBCP连接池C3P0连接池Tomcat内置连接池...

  • 连接池——(自定义连接)

    一.自定义连接池 实现思路 1.指定初始化连接数目,程序启动时就执行创建2.指定最大连接数3.指定当前使用的连接数...

  • DBCP

    硬编码实现连接池 配置方式实现连接池 配置文件

  • SpringBoot定时任务自定义实现

    SpringBoot定时任务自定义实现 1. 注解方式实现 2. 自定义实现 - org.springframew...

  • Day_02_C3P0+DBUtils

    学会自定义连接池 装饰者设计模式 C3P0连接池 JavaBean DBUtils

  • Java自学-JDBC 数据库连接池

    数据库连接池 与线程池类似的,数据库也有一个数据库连接池。 不过他们的实现思路是不一样的。本章节讲解了自定义数据库...

  • 数据库连接池

    自定义连接池 只是简化的说明原理,而不是真实上线使用 第三方连接池 常用连接池: DBCP C3P0 DBCP ...

网友评论

      本文标题:2.自定义连接池的实现

      本文链接:https://www.haomeiwen.com/subject/xiuoottx.html