JDBC

3.983 visualizações

Publicada em

On holiday, I gave some courses about Java. Then I created this slide for dealing about JDBC. I hope it be useful.

Ramon Pereira Lopes
Ramon.Lopes@Sun.COM

Publicada em: Tecnologia
0 comentários
4 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
3.983
No SlideShare
0
A partir de incorporações
0
Número de incorporações
49
Ações
Compartilhamentos
0
Downloads
243
Comentários
0
Gostaram
4
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • JDBC

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

    ×