1、连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。
  作用:避免频繁地创建与消毁,给服务器减压力。
2、数据库的弊端:
  1.当用户群体少服务器可以支撑,如果群体比较大万级别服务器直接死机。数据库默认的并发访问50.
  2.每一个用完数据库之后直接关闭,不能重复利用太浪费资源。
3、设计连接池:
  1.在池子中创建出多个连接供使用。
  2.当用户需要操作数据库时直接从池子中获取连接即可。
  3.当用户使用完毕之后把连接归还给连接池,可以达到重复使用。
  4.可以设定池子的最大容器。比如50个连接,当第51个人访问的时候,需要等待。
  5.其它用户释放资源的时候,可以使用。

4、手动实现连接池

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

public class JDBCTool {
    private static Connection conn;
    private static String driverName;
    private static String username;
    private static String url;
    private static String password;
    static {
        InputStream is = JDBCTool.class.getClassLoader().getResourceAsStream("qq.properties");
        Properties prop = new Properties();
        try {
            prop.load(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
        driverName = (String)prop.get("driverClassName");
        username = (String)prop.get("username");
        url = (String)prop.get("url");
        password = (String)prop.get("password");
        
        try {
            Class.forName(driverName);
        } catch (Exception e) {
            e.printStackTrace();
        }
        
    }
    
    public static Connection getConn() {
        try {
            conn = DriverManager.getConnection(url, username, password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }
    
    public static void close(Connection conn,PreparedStatement ps,ResultSet rs) {
        if(conn!=null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(ps!=null) {
            try {
                ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(rs!=null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        
    }
}
手动实现连接池第一步

相关文章:

  • 2022-01-03
  • 2021-09-17
  • 2021-09-30
  • 2021-11-19
  • 2021-07-26
  • 2021-07-05
猜你喜欢
  • 2022-01-16
  • 2021-06-06
  • 2021-09-21
  • 2022-01-15
  • 2021-12-15
  • 2021-12-17
  • 2021-11-08
相关资源
相似解决方案