Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação II Banco de Dados JDBC JDBC • O que é JDBC? • Java DataBase Connectivity • Conjunto de classes e interfaces (API – Application Programming Interface) escritas na Linguagem Java que realiza o envio de cláusulas SQL para qualquer banco de dados relacional • Desde que o banco de dados possua um Driver JDBC • O JDBC é uma API de baixo nível e base para APIs de alto nível • Amplia a funcionalidade do Java • Possibilita o uso de bancos de dados já instalados JDBC • De maneira simplificada o JDBC executa as seguintes operações: • Estabelece conexão com o banco de dados • Executa consultas (ou atualizações) • Recebe o conjunto de resultados das consultas • Executa procedures/functions • Obtém informações sobre o esquema do banco de dados, como tabelas, índices, visões e procedures • Executa transações JDBC JDBC • Banco de Dados • MySql • Download MySql Installer • https://dev.mysql.com/downloads/installer/ • Download MySql Workbench • https://dev.mysql.com/downloads/workbench/ • Download JDBC Driver (Connector) • https://dev.mysql.com/downloads/connector/j/ JDBC • Abrindo Conexão com MySql • DriverManager • A classe DriverManager é a responsável por gerenciar o processo de comunicação com os drivers do banco de dados. • Abrindo Conexão • É necessário invovar o método getConnection() ✓ Método static da classe DriverManager ✓ Retorna uma conexão (Connection) ✓ String de conexão do JDBC (jdbc:mysql://IP/DATABASE ) ✓ Login e senha do banco de dados DriverManager.getConnection(“jdbc:mysql://localhost[porta]/DATABASE ”) JDBC • Observação sobre o DriverManager • Para usar a classe DriverManager é necessário importar o Driver JDBC no projeto JDBC • Criando a Classe ConnectionFactory public class ConnectionFactory { public Connection getConnection(){ String url = "jdbc:mysql://localhost:3306/database"; try { return DriverManager.getConnection(url,“login", “senha"); } catch (SQLException e) { throw new RuntimeException(e); } } } import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; Essa linha de código está embrulhando e relançando a SQLException como uma RuntimeException ✓ Vantagem: Diminuição do acoplamento com a API do JDBC Class.forName("com.mysql.jdbc.Driver") JDBC • URLs JDBC para outros Banco de dados • Sql Server: jdbc:sqlserver://IP/DATABASE • Download Driver JDBC • https://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11774 • PostgreSQL: jdbc:postgresql://IP/DATABASE • Download Driver JDBC • https://jdbc.postgresql.org/download/postgresql-42.1.1.jar • Oracle 11g: jdbc:oracle://IP/DATABASE • Download Driver JDBC • http://www.oracle.com/technetwork/apps-tech/jdbc-112010-090769.html JDBC • Padrões de Projeto • Factory Method • Muitas vezes queremos controlar o processo de criação de um objeto que pode ser repetido diversas vezes em nosso código, como o de abrir uma conexão. O que aconteceria se esse código estivesse espalhado por nossa aplicação e alguma informação mudasse? • Ex. Uma troca de login, por exemplo, faria você mudar diversas partes do seu código. JDBC • Testando a Conexão com o Banco de Dados public static void main(String[] args) { Connection conn = new ConnectionFactory().getConnection(); System.out.println("Conexao aberta!"); conn.close(); } JDBC • Realizando Operações no Banco de Dados • Inserir • Remover • Listar todos os produtos • Consultar por atributo • Atualizar JDBC • Interfaces JDBC que irão ajudar nas operações Interface Descrição Connection Representa a conexão com o banco especificado. Dentro do contexto da conexão, cláusulas SQL são executadas e os resultados são devolvidos PreparedStatement Usados para executar cláusulas SQL que se repetem várias vezes de maneira eficiente e executar consultas parametrizadas. Instâncias de PreparedStatement contêm cláusulas SQL já compiladas. ResultSet Usado para acessar os dados retornados pelas cláusulas SQL executadas. JDBC • Os métodos que irám executar as operações com o banco de dados serão criados em uma classe DAO (Data Access Object). • Data Access Object (DAO). • É um padrão de desenvolvimento de Software • Objeto que prove uma interface abstrata para algum tipo de banco de dados ou mecanismo de persistência. • Mapeia chamadas de aplicação para a camada de persistência sem expor detalhes do banco de dados. • Separação de responsabilidades • Necesssidades da aplicação vs Recursos do BD para atender as necessidades JDBC • Data Access Object (DAO). (continuação…) • O DAO pode ser pensado como um Mapeador entre objetos da aplicação e a camada de persistência física. • É tradicionalmente associado a linguagem de programação Java JDBC • Data Access Object (DAO). (continuação…) • Vantagens • Reuso do Código • Abstração • Melhor Manutenabilidade • Desvantagens • Por ser uma camada a mais (Um objeto a mais instanciado) • Memória • Tempo de Processamento JDBC • Criando a Interface do DAO public interface InterfaceNomeDAO { public void adicionar (Object o); public void remover(Object o); public ArrayList<Object> listar(); public void alterar(Object o); } JDBC • Criando a classe que irá implementar a Interface Dao public class NomeClasseDAO implements InterfaceNomeDAO{ //Todos os métodos que irão operar com o banco de dados } JDBC • Para exemplificar, • Vamos criar uma classe Pessoa public class Pessoa(){ private String nome; private long cpf; public Pessoa(){ } public Pessoa(String nome, long cpf){ this.nome = nome; this.cpf = cpf; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public long getCpf() { return cpf; } public void setCpf(long cpf) { this.cpf = cpf; } } JDBC public void adiciona (Pessoa p){ Connection conn = new ConnectionFactory().getConnection(); try{ PreparedStatement ps = conn.prepareStatement ("insert into nomeTabela (nome, cpf) values (?,?)"); ps.setString(1, p.getNome()); ps.setLong(2, p.getLong()); ps.execute(); ps.close(); }catch (SQLException e) { throw new RuntimeException(e); }finally{ try{ conn.close(); }catch(SQLException e){ throw new RuntimeException(e); } } } ✓ Método Inserir
Compartilhar