基本的に、AbstractModel クラスで定義されたこれらのメソッドを使用して、データベースに接続および切断します。
// close connection
public void closeConnection(){
try{
// if (!rs.isClosed()){
// rs.close();
// }
cstmt.close();
SingletonConnection.instance();
DatabaseConnection.closeConnection();
} catch (SQLException e){
System.out.println("SQL Exception: ");
e.printStackTrace();
}
}
// establish connection
public void createConnection(){
try {
SingletonConnection.instance();
myConnection = DatabaseConnection.establishConnection();
} catch (SQLException e){
e.printStackTrace();
}
}
ResultSet rs を閉じようとすると NullPointerException という別の問題が発生しましたが、c3p0 のドキュメントには、接続が終了するとデフォルトで ResultSet が閉じられると記載されています。
もちろん、これら 2 つのメソッドは、DatabaseConnection クラスのこれら 2 つのメソッドを呼び出します。
// create connection
public static Connection establishConnection() throws SQLException {
return datasource.getConnection();
}
// close connection
public static void closeConnection() throws SQLException{
DataSources.destroy(datasource);
}
したがって、基本的に getConnection() および destroy() メソッドを使用して、データソースの接続を開いたり閉じたりします。c3p0 接続プールを扱う場合、これは正しいアプローチですか? 今のところ問題なく動作しているようです。