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