Espero não desrespeitar as regras do grupo com esse tópico. Gostaria de um opinião sobre um classe que desenvolvi.
Tenho uma aplicação Desktop que usa banco de dados MySQL. Criei um classe DBConnection que possui uma conexao com banco de dados MySQL e é static (linha 11), ou seja todas as outras classe usarão a mesma conexao com o banco de dados. (não há concorrência na minha aplicação).
Cada vez que uma classe da minha aplicação precisar realizar alguma consulta no banco de dados ela solicitará essa mesma conexao.
Gostaria de uma opinião se a maneira que está implementada serve aos propositos da aplicação (desktop simples), pode/deve ser melhorada, como?, devo usar algum design pattern?qual?
Codigo da classe:
package org.bancodedados;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
public class DBConnection {
private static Connection connection=null;
private static String IPServidor= "127.0.0.1";
private static String usuario="root";
private static String senha= "";
private static String url = "jdbc:mysql://" + IPServidor + "/gerequisitos";
public static synchronized Connection getConnection() throws SQLException {
if (connection == null) {
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(url, usuario, senha);
} catch (ClassNotFoundException ex) {
Logger.getLogger(DBConnection.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
}
return connection;
}
public static void closeConnection() {
try {
connection.close();
connection = null;
System.gc();
} catch (SQLException ex) {
Logger.getLogger(DBConnection.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Exemplo de chamada e uso da conexao:
try {
Connection conn = DBConnection.getConnection();
Statement stm = conn.createStatement();
ResultSet rs = stm.executeQuery("SELECT * FROM tbObjetivosOrganizacionais");
} catch (SQLException ex) {
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
}