Here is my problem: I know it's not considered as a good pracitse, however I've been told by teacher to use singleton for JDBC connection.
Argument for why was that database connection is very expensive operation so I shouldn't connect to database every time I need to do operation with my database.
But how can I close the connection if my code looks like this? What are the options? I was looking for a solution of my problem but I couldn't find one.
Thank you very much! I really appreaciate all your time and effort.
public class DbConnect {
public static Connection con;
public static Statement st;
public static ResultSet rs;
public DbConnect() throws SQLException{
con = getDbConnection();
st = con.createStatement();
rs = null;
}
public static Connection getDbConnection(){
try{
Class.forName(("com.mysql.cj.jdbc.Driver"));
con = DriverManager.getConnection( ....
....
}
public static void closeConnection() throws SQLException{
con.close();
st.close();
rs.close();
}
// Example of how I use it:
public void removeCustomer(String value) throws SQLException{
String query="DELETE FROM customer WHERE idCustomer="+value;
pst=DbConnect.con.prepareStatement(query); // THIS
try {
pst.executeUpdate();
} catch (SQLException ex) {
Logger.getLogger(CustomerRemover.class.getName()).log(Level.SEVERE, null, ex);
} finally {
pst.close();
}
}