前書き
以前は、データベースを追加、削除、変更、チェックするたびに、接続リンクが最初に確立され、使用後に閉じられていました。何千人ものユーザーがデータを追加および変更すると、パフォーマンスと開発時間の無駄になります。実際、接続を使用してリンクとクローズを行うことができます。これは、接続プールを介して実現できます。
接続プール
コレクションを使用して複数のリンクを保存し、リンクプールから直接リンクを取り出して後で使用できるようにします。リンクを再作成する必要がないため、時間を節約できます。
作成する
//创建一个集合,这个集合里面用来存放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);
}