GUJ
Notícias, artigos e o maior fórum brasileiro sobre Java
home
fórum
notícias
tópicos recentes
empregos
artigos
Bem-vindo ao GUJ.
Crie seu login
, ou digite-o para logar no site.
Usuário:
Senha:
Alternativa ao Filtro de Conexões
Índice dos Fóruns
»
Desenvolvimento Web
Autor
Mensagem
27/01/2012 16:51:27
Assunto:
Alternativa ao Filtro de Conexões
Marcelo Junior
Entusiasta Java
Membro desde: 02/08/2011 07:53:52
Mensagens: 21
Offline
Factory Method + Singleton
package br.com.caelum.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; /** * @função Fornecer uma Única Fábrica de Conexões e compartilhar sua conexão, * como alternativa ao Filtro de Conexões * * @autor Marcelo Junior * * @data 27/12/2012 */ public class ConnectionSingletonFactory { private Connection connection; // Usa o Padrão de Projeto Singleton private ConnectionSingletonFactory() { }; private static ConnectionSingletonFactory instance = new ConnectionSingletonFactory(); public static synchronized ConnectionSingletonFactory getInstance() { return instance; } // Usa o Padrão de Projeto Factory Method public Connection getConnection() { if (connection == null) { try { connection = DriverManager.getConnection( "jdbc:mysql://localhost/fj21", "usuario", "senha"); } catch (SQLException e) { throw new RuntimeException(e); } } return connection; } @Override protected void finalize() throws Throwable { // TODO Auto-generated method stub // garante o fechamento da conexão connection.close(); // deixa o objeto(conexão) anterior disponível para o coletor de lixo connection = null; super.finalize(); } }
Exemplo em DAO
package br.com.caelum.jdbc.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import br.com.caelum.jdbc.ConnectionSingletonFactory; import br.com.caelum.jdbc.modelo.Contato; /** * @função Exemplo de utilização da ConnectionSingletonFactory * * @autor Caelum fj21 * * @data 27/12/2012 */ public class ContatoDAO { private Connection connection = ConnectionSingletonFactory.getInstance() .getConnection(); public void adiciona(Contato contato) { String sql = "INSERT INTO contatos (nome,email,endereco,dataNascimento) VALUES (?,?,?,?)"; try { PreparedStatement stmt = connection.prepareStatement(sql); stmt.setString(1, contato.getNome()); stmt.setString(2, contato.getEmail()); stmt.setString(3, contato.getEndereco()); stmt.setDate(4, new java.sql.Date(contato.getDataNascimento() .getTimeInMillis())); stmt.execute(); stmt.close(); } catch (SQLException e) { throw new RuntimeException(e); } } public List<Contato> getLista() { try { List<Contato> contatos = new ArrayList<Contato>(); PreparedStatement stmt = connection .prepareStatement("SELECT * FROM contatos"); ResultSet rs = stmt.executeQuery(); while (rs.next()) { Contato contato = new Contato(); contato.setId(rs.getLong("id")); contato.setNome(rs.getString("nome")); contato.setEmail(rs.getString("email")); contato.setEndereco(rs.getString("endereco")); Calendar data = Calendar.getInstance(); data.setTime(rs.getDate("dataNascimento")); contato.setDataNascimento(data); contatos.add(contato); } rs.close(); stmt.close(); return contatos; } catch (SQLException e) { throw new RuntimeException(e); } } public void altera(Contato contato) { String sql = "UPDATE contatos SET nome=?, email=?, endereco=?, dataNascimento=? WHERE id=?"; try { PreparedStatement stmt = connection.prepareStatement(sql); stmt.setString(1, contato.getNome()); stmt.setString(2, contato.getEmail()); stmt.setString(3, contato.getEndereco()); stmt.setDate(4, new java.sql.Date(contato.getDataNascimento() .getTimeInMillis())); stmt.setLong(5, contato.getId()); stmt.execute(); stmt.close(); } catch (SQLException e) { throw new RuntimeException(e); } } public void remove(Contato contato) { try { PreparedStatement stmt = connection .prepareStatement("DELETE FROM contatos WHERE id=?"); stmt.setLong(1, contato.getId()); stmt.execute(); stmt.close(); } catch (SQLException e) { throw new RuntimeException(e); } } }
"É impossível para um homem aprender aquilo que ele acha que já sabe!"
Epíteto
Índice dos Fóruns
»
Desenvolvimento Web
Ir para:
Selecione um Fórum
Notícias
Assuntos gerais (Off-topic)
MundoJ - Artigos, Notícias e Debates
Artigos e Tutoriais
Java Básico
Java Avançado
Ferramentas, Frameworks e Utilitários
Desenvolvimento Web
Interface Gráfica
Google Android e Java Micro Edition (ME)
Certificação Java
Persistência: Hibernate, JPA, JDBC e outros
Java Enterprise Edition (Java EE)
Frameworks e Bibliotecas brasileiros
RIA - Flex, JavaFX e outros
Arquitetura de Sistemas
Metodologias de Desenvolvimento e Testes de Software
JavaScript
Ruby & Ruby on Rails
Outras Linguagens
Powered by
JForum 2.1.8
©
JForum Team