Connection Factory - A Fábrica de Conexões
Em padrões de desenvolvimento, o "conceito de fábrica" nada mais é do que uma classe onde encapsulamos métodos muito utilizados, além da mesma ser capaz de retornar uma referência a um novo objeto.
Resumindo, no caso da conexão a um Banco de Dados, criamos uma "ConnectionFactory" para nos conectarmos ao banco de dados, nos retornando uma instancia do objeto de conexão com o banco de dados, de maneira a evitar codificação repetida em diversos locais do código.
Nesta caso, também implementaremos métodos para inicialização e fechamento desta conexão, evitando consumo desnecessário de recursos.
No código abaixo, criamos uma conexão para um Banco de Dados Oracle.
Utilizamos o driver ojdbc6.jar, disponível em:
Nos próximos posts demonstrarei como criarmos uma classe com métodos para acesso às tabelas do banco. Esta classe, buscará uma instancia da conexão do banco, usando o metodo estático ConnectionFactory.getConnection();
Abaixo, código comentado de uma Connection Factory:
package br.com.devfacil.factory; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class ConnectionFactory { private static Connection conn; public static Connection getConnection() { // Connection Factoru de exemplo para Banco Oracle try { // Configurações para acesso ao Banco de dados String driverName = "oracle.jdbc.driver.OracleDriver"; String url = "jdbc:oracle:thin:@localhost:1521:XE"; String username = "TESTES_LOCAIS"; String password = "123456"; // Carrega o driver JDBC Class.forName(driverName); // Cria uma conexão com a base de dados conn = DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { // Erro na conexão com o driver System.out.println("Não foi localizado o driver Oracle."); } catch (SQLException f) { // Erro na conexão com o Banco de Dados System.out.println("Não foi possível conectar ao banco."); } return conn; } // Fecha as conexões public static void closeConnection(Connection conn, PreparedStatement pstm, ResultSet rs) throws Exception { close(conn, pstm, rs); } public static void closeConnection(Connection conn, PreparedStatement pstm) throws Exception { close(conn, pstm, null); } public static void closeConnection(Connection conn) throws Exception { close(conn, null, null); } private static void close(Connection conn, PreparedStatement pstm, ResultSet rs) throws Exception { try { if (rs != null) rs.close(); if (pstm != null) pstm.close(); if (conn != null) conn.close(); } catch (Exception e) { throw new Exception(e.getMessage()); } } }
Nenhum comentário:
Postar um comentário