Mesmo porque a ideia de ter um connectionfactory é interessante para aproveitar uma conexao aberta, visto que o custo de abrir uma conexao costuma ser alto.
Voce pode postar o codigo pra gente ver?
Zeed01
La vai:
Classe que cria e retorna uma conexão:
/* * ConnectionFactory.java * * Created on 28 de Maio de 2007, 17:33 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */packagecom.atm.DAO;importatm.*;importjava.sql.*;importjavax.swing.JOptionPane;/** * * @author r100320 */publicclassConnectionFactory{privatestaticConnectionFactoryinstanciaUnica=null;privateConnectionconn=null;privatestaticintclientes=0;Class.forName("com.mysql.jdbc.Driver");System.out.println("Conectando ao banco MySql...");conn=DriverManager.getConnection("jdbc:mysql://localhost/atmDB","root","D78_hc121");conn.setAutoCommit(false);System.out.println("Conectado ao banco MySql...");}catch(ClassNotFoundExceptione){JOptionPane.showMessageDialog(null,"Falha na conexão com o banco de dados \n"+e.getMessage());e.printStackTrace();}catch(SQLExceptione){JOptionPane.showMessageDialog(null,"Falha na conexão com o banco de dados \n"+e.getMessage());e.printStackTrace();}}publicstaticConnectionFactorygetInstance(){if(instanciaUnica==null){instanciaUnica=newConnectionFactory();}returninstanciaUnica;}publicConnectiongetConnection(){if(conn==null){System.out.println("Conexão nula");thrownewRuntimeException("Conexão nula");}clientes++;System.out.println("Conexão "+clientes);returnconn;}publicvoidshutDown(){System.out.println("Shutdown "+clientes);clientes--;if(clientes>0)return;try{conn.close();instanciaUnica=null;System.out.println("Conexão fechada");conn=null;}catch(SQLExceptionsqle){System.out.println(sqle);}}}
Classe que faz uma persistencia:
/* * Perfil.java * * Created on 29 de Maio de 2007, 17:39 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */packagecom.atm.DAO;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.List;importjavax.swing.JOptionPane;/** * * @author r100320 */publicclassPerfilDAO{privateConnectionconn=null;privatePreparedStatementstp;privateResultSetrs;/** Creates a new instance of UsuarioDAO */publicPerfilDAO(){}publicvoidatualizaPerfil(Perfilperfil){try{conn=ConnectionFactory.getInstance().getConnection();stp=conn.prepareStatement("Update perfil set pe_peDescricao = ? where pe_peID = ?");stp.setString(1,perfil.getPepeDescricao());stp.setInt(2,perfil.getPepeID());stp.executeUpdate();stp.close();conn.commit();}catch(SQLExceptionex){try{conn.rollback();}catch(SQLExceptione){JOptionPane.showMessageDialog(null,"Falha na execução de rollback. Alteração cancelada. \n"+e.getMessage());e.printStackTrace();}JOptionPane.showMessageDialog(null,"Falha na atualização do registro. \n"+ex.getMessage());ex.printStackTrace();}}publicvoidapagaPerfil(intpeId){try{conn=ConnectionFactory.getInstance().getConnection();stp=conn.prepareStatement("Delete from perfil where pe_peID = ?");stp.setInt(1,peId);stp.executeUpdate();stp.close();conn.commit();}catch(SQLExceptionex){try{conn.rollback();}catch(SQLExceptione){JOptionPane.showMessageDialog(null,"Falha na execução de rollback. Exclusão cancelada. \n"+e.getMessage());e.printStackTrace();}JOptionPane.showMessageDialog(null,"Falha na exclusão do registro. \n"+ex.getMessage());ex.printStackTrace();}}publicList<Perfil>buscarListaPerfil(){PerfilperfilTemp=null;List<Perfil>listaPerfilTemp=newArrayList<Perfil>();try{conn=ConnectionFactory.getInstance().getConnection();stp=conn.prepareStatement("Select * from perfil order by pe_peid");rs=stp.executeQuery();while(rs.next()){perfilTemp=newPerfil(rs.getInt("pe_peID"),rs.getString("pe_peDescricao"));listaPerfilTemp.add(perfilTemp);}rs.close();stp.close();//ConnectionFactory.getInstance().shutDown();}catch(SQLExceptionex){JOptionPane.showMessageDialog(null,"Falha na seleção dos registros. \n"+ex.getMessage());ex.printStackTrace();}returnlistaPerfilTemp;}}