Ramon Lopes Embaixador de Campus Sun - UFBA Java DataBase Connectivity - JDBC
Introdução SQL O que é um BD? Agenda JDBC Projeto Final Padrões de Projetos
O que é um Banco de Dados? Conjuntos de dados com uma estrutura regular que organizam informação É onde guardamos os dados que pertencem ao   nosso sistema Usualmente mantido e acessado por meio de um software conhecido como SGBD O SGBD disponibiliza uma interface para que os seus clientes possam incluir, alterar ou consultar dados
Conceitos Básicos Tabela Representa uma determinada entidade no modelo de dados Coluna Define uma propriedade (atributo) que compõe uma entidade Linha Define uma informação Chave primária Chave de identificação única e exclusiva
Introdução SQL Structured Query Language Linguagem padrão para manipular sistema de banco de dados Com SQL podemos Inserir dados Recuperar dados Atualizar dados Deletar dados Extremamente  fácil!
Introdução SQL SQL Data Manipulation Language (DML) SELECT INSERT INTO UDPATE DELETE SQL Data Definition Language (DDL) CREATE TABLE ALTER TABLE DROP TABLE
Introdução SQL – Select Sintaxe: SELECT nome_da_coluna FROM nome_da_tabela WHERE condicao; Exemplos: SELECT * FROM alunos; SELECT nome, cpf FROM alunos; SELECT * FROM pessoas WHERE idade > 20; SELECT * FROM pessoas WHERE nome LIKE 'j%o';
Introdução SQL – Insert Sintaxe: INSERT INTO nome_tabela VALUES(valor1, valor2, ...); Exemplos: INSERT INTO pessoas VALUES('Ramon', 19); INSERT INTO pessoas(nome, idade) VALUES('Joao',20);
Introdução SQL – Update Sintaxe: UPDATE nome_da_tabela SET nome_coluna = novo_valor WHERE condição Exemplos: UPDATE pessoas SET nome = 'Ramon Lopes' WHERE name = 'Ramon'; UPDATE pessoas SET nome = 'Joao Jose', idade = 19 WHERE name = 'Joao'; UPDATE projetos SET ano = 2008;
Introdução SQL – Delete Sintaxe: DELETE nome_tabela WHERE condição Exemplos: DELETE FROM pessoas WHERE nome='Ramon' DELETE FROM pessoas WHERE nome='Joao' AND idade = 19 DELETE FROM pessoas WHERE idade > 20
Introdução SQL Tópicos Adicionais Join Order By Between Alias Functions
Exercício 1 https://app.dcc.ufba.br/phpmyadmin/ Login: ramonp061 Password: *********** Clicar em SQL (Centro Superior) Tabela: Pessoas Executar variações dos comandos mostrados anteriormente
demo
JDBC Padrão para acessar Banco de Dados Definição de conjunto de iterfaces que são implementadas pelos fabricantes do JDBC Driver Maior parte da API está em java.sql Cada Banco de Dados deve possuir seu Driver JDBC
JDBC Fonte: Apostila Caelum Web Fj-21
JDBC Passos Adicionar o Driver JDBC ao conjunto de bibliotecas da aplicação Carregar o Driver JDBC Obter uma conexão Criar um PreparedStatement Executar a query Interpretar os resultados Liberar Recursos do sistema
JDBC Carregar Driver JDBC Class.forName("com.mysql.jdbc.Driver"); Criar Conexão DriverManager fornece objetos de conexão Objeto Connection referencia a conexão obtida pelo DriverManager Exemplo: Connection con = DriverManager.getConnection();
Exercício 2 Criar um novo projeto Adicionar o Driver JDBC ao conjunto de bibliotecas da aplicação Carregar o Driver Abrir uma conexão
JDBC PreparedStatement Comando SQL é determinado na criação Comando SQL é pré-compilado Referência obtida através do objeto de conexão Exemplo: PreparedStatement stmt = conn.prepareStatment(“Insert into pessoas values(?)”);
JDBC PreparedStatement Uso de parâmetros é uma boa prática Reutilização do comando SQL Parâmetros são indicados por: '?' Métodos setXXX(posição, valor); Exemplo: stmt = conn.prepareStatment(“Insert into pessoas values(?,?)”); stmt.setString(1,”Ramon”); stmt.setInt(2,25);
JDBC – Inserindo Dados Exemplo: PreparedStatment stmt = conn.prepareStatment("INSERT INTO pessoas(nome, idade) VALUES(?,?)"); stmt.setString(1, "Ramon"); stmt.setInt(2, 19); stmt.execute(); stmt.close();
Exercício 3 Criar um método que receberá como parâmetro dados necessários para inserir uma pessoa Dentro do método criado, criar a PreparedStatement Executar várias chamadas ao método criado com parâmetros diferentes Verificar pelo Netbeans a tabela Pessoa
JDBC – Recuperando Dados Execução da query: executeQuery() ResultSet é retornado, contendo resultados da busca Deve-se iterar tal objeto, método: next(); Iterator é inicializado uma posição antes da primeira linha Recupera-se os dados getXXX('coluna');
JDBC – Recuperando Dados Exemplo: PreparedStatemnt stmt = conn.prepareStatment(“SELECT * FROM pessoas); ResultSet res = stmt.executeQuery(); while(res.next()){ String s = res.getString(“nome); } res.close(); stmt.close();
JDBC – Liberando Recursos Responsabilidade do Programador Implicação em indisponibilidade futura de recursos Feita atrvés do método close() Ordem a ser feita: ResultSet Statement Connection
Exercício 4 Recuperar e exibir todas as pessoas cadastradas no banco Executar operações de DELETE / UPDATE  Seguem praticamente o mesmo padrão Método executeUpdate();
JavaBeans Componentes reutilizáveis Implementa-se Serializable Construtor sem parâmetros Atributos private Métodos getters e setters Regras de nomeação
Exercício 5 Criar um JavaBean Tabela: Pessoa Atributos: nome, idade, ano Gerar getters e setters
Padrão de Projetos DAO Encapsular o acesso ao Banco de Dados Ex: A classe PessoaDAO conterá todos os métodos responsáveis de interação com a base dados Singleton Garantir uma única instância de uma classe Ex: Utilizamos para garantir apenas um único objeto Connection Exemplos
Exercício 5 Criar um novo projeto Criar uma classe ConnectionFactory Declarar um atributo de classe private para Connection Disponibilizar um método de classe getConnection para disponibilizar o Connection. Deve-se usar o Singleton Criar uma classe PessoaDAO cujas operações: CRUD
Exercício 6  Inserir na classe PessoaDAO um método exclusivo para fechar os recursos passados (Statement, ResultSet) Inserir na Factory um método para fechar Connection
Próximos Passos Transactions Stored Procedures Framework ORM
Projeto Final Aplicar todo conteúdo que foi visto na implementação do sistema proposto. Deve-se utilizar os padrões de projetos e boas práticas apresentadas. O resultado final desta etapa será utilizado no próximo mini-curso de Java Web e suas ramificações.
Java DataBase Connectivity – JDBC Obrigado! Ramon Lopes [email_address]

JDBC

  • 1.
    Ramon Lopes Embaixadorde Campus Sun - UFBA Java DataBase Connectivity - JDBC
  • 2.
    Introdução SQL Oque é um BD? Agenda JDBC Projeto Final Padrões de Projetos
  • 3.
    O que éum Banco de Dados? Conjuntos de dados com uma estrutura regular que organizam informação É onde guardamos os dados que pertencem ao  nosso sistema Usualmente mantido e acessado por meio de um software conhecido como SGBD O SGBD disponibiliza uma interface para que os seus clientes possam incluir, alterar ou consultar dados
  • 4.
    Conceitos Básicos TabelaRepresenta uma determinada entidade no modelo de dados Coluna Define uma propriedade (atributo) que compõe uma entidade Linha Define uma informação Chave primária Chave de identificação única e exclusiva
  • 5.
    Introdução SQL StructuredQuery Language Linguagem padrão para manipular sistema de banco de dados Com SQL podemos Inserir dados Recuperar dados Atualizar dados Deletar dados Extremamente fácil!
  • 6.
    Introdução SQL SQLData Manipulation Language (DML) SELECT INSERT INTO UDPATE DELETE SQL Data Definition Language (DDL) CREATE TABLE ALTER TABLE DROP TABLE
  • 7.
    Introdução SQL –Select Sintaxe: SELECT nome_da_coluna FROM nome_da_tabela WHERE condicao; Exemplos: SELECT * FROM alunos; SELECT nome, cpf FROM alunos; SELECT * FROM pessoas WHERE idade > 20; SELECT * FROM pessoas WHERE nome LIKE 'j%o';
  • 8.
    Introdução SQL –Insert Sintaxe: INSERT INTO nome_tabela VALUES(valor1, valor2, ...); Exemplos: INSERT INTO pessoas VALUES('Ramon', 19); INSERT INTO pessoas(nome, idade) VALUES('Joao',20);
  • 9.
    Introdução SQL –Update Sintaxe: UPDATE nome_da_tabela SET nome_coluna = novo_valor WHERE condição Exemplos: UPDATE pessoas SET nome = 'Ramon Lopes' WHERE name = 'Ramon'; UPDATE pessoas SET nome = 'Joao Jose', idade = 19 WHERE name = 'Joao'; UPDATE projetos SET ano = 2008;
  • 10.
    Introdução SQL –Delete Sintaxe: DELETE nome_tabela WHERE condição Exemplos: DELETE FROM pessoas WHERE nome='Ramon' DELETE FROM pessoas WHERE nome='Joao' AND idade = 19 DELETE FROM pessoas WHERE idade > 20
  • 11.
    Introdução SQL TópicosAdicionais Join Order By Between Alias Functions
  • 12.
    Exercício 1 https://app.dcc.ufba.br/phpmyadmin/Login: ramonp061 Password: *********** Clicar em SQL (Centro Superior) Tabela: Pessoas Executar variações dos comandos mostrados anteriormente
  • 13.
  • 14.
    JDBC Padrão paraacessar Banco de Dados Definição de conjunto de iterfaces que são implementadas pelos fabricantes do JDBC Driver Maior parte da API está em java.sql Cada Banco de Dados deve possuir seu Driver JDBC
  • 15.
    JDBC Fonte: ApostilaCaelum Web Fj-21
  • 16.
    JDBC Passos Adicionaro Driver JDBC ao conjunto de bibliotecas da aplicação Carregar o Driver JDBC Obter uma conexão Criar um PreparedStatement Executar a query Interpretar os resultados Liberar Recursos do sistema
  • 17.
    JDBC Carregar DriverJDBC Class.forName("com.mysql.jdbc.Driver"); Criar Conexão DriverManager fornece objetos de conexão Objeto Connection referencia a conexão obtida pelo DriverManager Exemplo: Connection con = DriverManager.getConnection();
  • 18.
    Exercício 2 Criarum novo projeto Adicionar o Driver JDBC ao conjunto de bibliotecas da aplicação Carregar o Driver Abrir uma conexão
  • 19.
    JDBC PreparedStatement ComandoSQL é determinado na criação Comando SQL é pré-compilado Referência obtida através do objeto de conexão Exemplo: PreparedStatement stmt = conn.prepareStatment(“Insert into pessoas values(?)”);
  • 20.
    JDBC PreparedStatement Usode parâmetros é uma boa prática Reutilização do comando SQL Parâmetros são indicados por: '?' Métodos setXXX(posição, valor); Exemplo: stmt = conn.prepareStatment(“Insert into pessoas values(?,?)”); stmt.setString(1,”Ramon”); stmt.setInt(2,25);
  • 21.
    JDBC – InserindoDados Exemplo: PreparedStatment stmt = conn.prepareStatment("INSERT INTO pessoas(nome, idade) VALUES(?,?)"); stmt.setString(1, "Ramon"); stmt.setInt(2, 19); stmt.execute(); stmt.close();
  • 22.
    Exercício 3 Criarum método que receberá como parâmetro dados necessários para inserir uma pessoa Dentro do método criado, criar a PreparedStatement Executar várias chamadas ao método criado com parâmetros diferentes Verificar pelo Netbeans a tabela Pessoa
  • 23.
    JDBC – RecuperandoDados Execução da query: executeQuery() ResultSet é retornado, contendo resultados da busca Deve-se iterar tal objeto, método: next(); Iterator é inicializado uma posição antes da primeira linha Recupera-se os dados getXXX('coluna');
  • 24.
    JDBC – RecuperandoDados Exemplo: PreparedStatemnt stmt = conn.prepareStatment(“SELECT * FROM pessoas); ResultSet res = stmt.executeQuery(); while(res.next()){ String s = res.getString(“nome); } res.close(); stmt.close();
  • 25.
    JDBC – LiberandoRecursos Responsabilidade do Programador Implicação em indisponibilidade futura de recursos Feita atrvés do método close() Ordem a ser feita: ResultSet Statement Connection
  • 26.
    Exercício 4 Recuperare exibir todas as pessoas cadastradas no banco Executar operações de DELETE / UPDATE Seguem praticamente o mesmo padrão Método executeUpdate();
  • 27.
    JavaBeans Componentes reutilizáveisImplementa-se Serializable Construtor sem parâmetros Atributos private Métodos getters e setters Regras de nomeação
  • 28.
    Exercício 5 Criarum JavaBean Tabela: Pessoa Atributos: nome, idade, ano Gerar getters e setters
  • 29.
    Padrão de ProjetosDAO Encapsular o acesso ao Banco de Dados Ex: A classe PessoaDAO conterá todos os métodos responsáveis de interação com a base dados Singleton Garantir uma única instância de uma classe Ex: Utilizamos para garantir apenas um único objeto Connection Exemplos
  • 30.
    Exercício 5 Criarum novo projeto Criar uma classe ConnectionFactory Declarar um atributo de classe private para Connection Disponibilizar um método de classe getConnection para disponibilizar o Connection. Deve-se usar o Singleton Criar uma classe PessoaDAO cujas operações: CRUD
  • 31.
    Exercício 6 Inserir na classe PessoaDAO um método exclusivo para fechar os recursos passados (Statement, ResultSet) Inserir na Factory um método para fechar Connection
  • 32.
    Próximos Passos TransactionsStored Procedures Framework ORM
  • 33.
    Projeto Final Aplicartodo conteúdo que foi visto na implementação do sistema proposto. Deve-se utilizar os padrões de projetos e boas práticas apresentadas. O resultado final desta etapa será utilizado no próximo mini-curso de Java Web e suas ramificações.
  • 34.
    Java DataBase Connectivity– JDBC Obrigado! Ramon Lopes [email_address]