Opinião BD

2 respostas
giovaniufop

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);
}

2 Respostas

Luiz-SP
private static String IPServidor= "127.0.0.1";  
     private static String usuario="root";  
     private static String senha= "";

Se vc precisar mudar o IP vai ter de recompilar o prgrama, isso não é bom, tb não é bom deixar o o root sem senha.

giovaniufop

nesse caso tudo bem, eu coloquei direto no codigo pra poder diminuir o tamanho do codigo pra colocar aki no grupo.

Na verdade, aki no meu computador eu estou usando a classe Properties.

Criado 12 de março de 2008
Ultima resposta 12 de mar. de 2008
Respostas 2
Participantes 2