데이터베이스 연결 풀 (1) 자체 구축 된 연결 풀

소개

이전에는 데이터베이스를 추가, 삭제, 수정, 확인할 때마다 연결 링크가 먼저 설정되고 사용 후 닫혔는데, 수천 명의 사용자가 데이터를 추가하고 수정하면 성능과 개발 시간이 낭비 될 수밖에 없었습니다. 실제로 연결은 연결 및 닫기에 사용할 수 있으며 연결 풀을 통해 수행 할 수 있습니다.

연결 풀

컬렉션을 사용하여 여러 링크를 저장하고 나중에 사용할 수 있도록 링크 풀에서 링크를 직접 가져 와서 다시 만들 필요없이 시간을 절약 할 수 있습니다.

창조하다

//创建一个集合,这个集合里面用来存放Connection;
	private static ArrayList<Connection> conList = new ArrayList<Connection>();
    //在整个服务器启动的时候,就直接先把链接资源创建起来,这样就不用每次使用的时候再去创建
	static {
    
    
		for(int i =0;i<=5;i++) {
    
    
			//通过遍历,在类的加载中先在连接池中创建了5个连接
			Connection con = createConnection();
			conList.add(con);
		}
		
	}
	//自动获取链接的方法
	public static Connection getConnection() {
    
    
		//在静态代码块中定义了5个链接,使用的时候,如果静态代码块中有链接,则使用。
		//如果静态代码块中的链接已经用完,则可以使用createConnection方法创建新的链接。
		if(conList.isEmpty()==false) {
    
    
			Connection con = conList.get(0);
			conList.remove(con);
			return con;
		}else {
    
    
			return createConnection();
		}
	}
	// 建立数据库连接
	public static Connection createConnection() {
    
    

		try {
    
    
			Class.forName("com.mysql.cj.jdbc.Driver");

			return DriverManager.createConnection(connectionUrl, "root", "121156");
		} catch (Exception e) {
    
    
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;

	}

완전한

링크 풀의 링크를 사용한 후에는 반환해야합니다. 이전에 캡슐화 된 closeConnection () 메서드 만 변경하면되며 연결 풀을 닫을 필요는 없습니다.

private static void closeConnection(Connection con) {
    
    
//未使用链接池时释放资源
//		try {
    
    
//			if (con != null)
//				con.close();
//		} catch (SQLException e) {
    
    
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
		//归还链接池
		conList.add(con);
	}

추천

출처blog.csdn.net/zhang19903848257/article/details/107145749