Duvida com conexão

0 respostas
Zeed01

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

Criado 26 de junho de 2007
Respostas 0
Participantes 1