Bom dia colegas !!!
Estou com um dúvida sobre onde e quando fazer a conexão com o BD.
Tenho uma classe chamada ConectionFactory responsável por criar uma conexão e retornar a classe que solicitou.
package com.atm.DAO;
import atm.*;
import java.sql.*;
import javax.swing.JOptionPane;
public class ConnectionFactory {
public static java.sql.Connection getConnection () {
Connection conn = null;
try {
/*Conexão MySql*/
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Conectando ao banco MySql...");
conn = DriverManager.getConnection("jdbc:mysql://localhost/atmDB",
"root","D78_hc121");
//conn = DriverManager.getConnection("jdbc:mysql://999.99.999.99/DB",
// "XXXX","XXXXXX");
System.out.println("Conectado ao banco MySql...");
return conn;
} catch (ClassNotFoundException e){
JOptionPane.showMessageDialog(null,"Falha na conexão com o banco de dados \n" + e.getMessage()) ;
e.printStackTrace();
} catch (SQLException e ) {
JOptionPane.showMessageDialog(null,"Falha na conexão com o banco de dados \n" + e.getMessage()) ;
e.printStackTrace();
}
return null;
}
}
Tenho telas de cadastro para duas tabelas, Usuario e Perfil, sendo que gerei duas classes DAO, respectivamente UsuarioDAO e PerfilDAO, em cada uma dessas classes tenho um método Conecta():
public class PerfilDAO {
private static Connection conn = null;
private static Statement st;
private static PreparedStatement stp;
private static ResultSet rs;
private static void conecta(){
try {
if (conn == null) {
conn = ConnectionFactory.getConnection();
conn.setAutoCommit(false);
} else
System.out.println("Conexão ja existe.");
} catch (SQLException ex) {
ex.printStackTrace();
}
}
Bom finalmente minha dúvida:
Da maneira que fiz se eu abrir a tela de Cadastro de Usuario crio uma conexão, ao abrir a tela Cadastro de Perfil crio outra conexão.
Isso esta correto ?
Considerando que a conexão com o banco é uma parte custosa para a aplicação, como poderia criar somente uma conexão para todo o sistema ? E isso funciona ?
Obrigado a todos !
[]s