Javafree

Acessando dados com Java: 1º parte - Simples Dao

Publicado por jesuino em 02/05/2012 - 459.366 visualizações

Leia a parte 2 deste artigo.

Esse tutorial pretende mostrar como operações como busca, deleção, atualização e inserção de dados no banco podem ser feitas com diversas tecnologias. Assim, podemos ter um repositório de tutorias sobre as mais diversas API's, tecnologias e frameworks que estão no mundo Java com um exemplo simples e de fácil entendimento.

Embora aqui no fórum tenhamos muitos tutoriais com acesso a banco de dados, esse pretende ser um pouco diferente, pois iremos utilizar as classes demonstradas hoje para construir outras partes em outras tecnologias.

Primeiramente parte iremos abordar somente o banco de dados e a manipulação dos dados em modo texto.

Futuramente, pretendemos usar essas mesmas classes com Java Swing entre outras tecnologias.

Por ser um primeiro exemplo simples, essa primeira parte desconsiderou algumas boas práticas e uso de alguns comandos um pouco mais complexos, e quebramos alguns padrões, como exibição de mensagem ser da responsabilidade da view. Assim, na segunda parte iremos mostrar como deixar o acesso mais limpo e flexível, eliminando muitos pontos fracos do código!

Sem papo, o aplicativo

Primeiro vamos definir o que iremos tratar, que tal uma pessoa? Ok, pessoa!!

Nossa pessoa precisa se identificar, RG! Mas você não chama as pessoas pelo RG, então colocaremos o nome da pessoa também e mais estado, cidade, idade e só.

Toda tabela precisa de um identificador único que chamamos de chave primária, ou seja, algo que diferencie uma tabela das outras. No caso da pessoa, a chave é o RG.

Agora vamos criar isso no banco de dados, estamos usando MySql.
Dúvidas com a instalação do MySQL?
Criamos um database com o nome "javafx_crud"(você pode criar com o nome que quiser), o script para a criação da tabela ficou assim:


Não estamos usando trigramação, afinal temos somente uma entidade(tabela)... :S

Rodando o Script você terá sua tabela no banco de dados fisicamente.

Sugestão: Usem MySql e MySql - Front
0

Para salvar os dados você tem que logar no banco e ir inserindo usando o comando INSERT, ou pela interface que os SGBDs(programa que gerencia o banco) oferecem.
Mas isso não é usual, o interessante é ter um aplicativo que faz isso, acessa o banco e permite as funcionalidades, sem o usuário conhecer o banco de dados.
Em Java, como em qualquer outra linguagem(exceto algumas específicas, como ABAP, mas isso já são outros 500), você tem que se conectar ao banco de dados para realizar ações com os dados. Dependendo do banco que você utiliza, existe um .jar que permite o acesso.

O JAR para o MySQL está anexo!

Quanto a manipulação, você pode usar um framework(ex: Hibernate, neste caso até a conexão) de persistência ou a solução nativa de java JDBC. JDBC é menos flexível que um framework, mas é mais simples para nosso projetinho, vamos usar JDBC!

Crie um projeto Java no eclipse , chame como quiser :), depois comece a codificação!

Hora de código

O comum em Java é criarmos classes Pojo, classes que são semelhantes a tabelas do banco, assim podemos manipular de forma igual para igual ao que está no banco. Nossa classe pessoa:

Claro, todos os atributos estão encapsulados, nunca use atributo público, use sempre métodos de acesso a atributos declarados como privados.

Essa classe é parte de um projeto MVC, ela é o modelo, ou model, por isso estará no pacote(usamos para dividir nosso projeto melhor) model, então crie um pacote e coloque esse código em um arquivo .java lá.

É importante a divisão de papéis: quem é Model, Control e View, assim podemos usar o que for definido hoje nos projetos futuros.
Agora vamos implementar a parte de banco de dados, meio chato mais temos que fazer.

Para a conexão temos uma classe que faz a função de fábrica de conexões. Isso mesmo, o padrão Factory que usamos em um projeto muito antigo, mas serve para esse da mesma forma. Obeserve que para outros bancos de dados você deve alterar a fábrica, essa só tem a parte do MySql.
Essa classe foi alocada no pacote "banco", então não perca tempo e crie o pacote "banco"(que estará em outro pacote futuramente, o dao).

Perceba que a classe lança um exceção quando algo da errado na conexão com o banco, e muita coisa pode dar errado!


Lembre-se de incluir o JAR no seu projeto para o driver do MySQL!!
0
Clique com o botão direito em cima do seu projeto, escolha propriedade. Na janela propriedades, escolha JavaBuild Path, clique em Add JARs ou Add External JARs
:



Para acessar os dados usamos o padrão DAO, assim encapsulamos todo o trabalho com o banco, e nossas classes que querer usar e manipular os dados simplesmente devem conhecer nossa classe DAO, sem se preocupar com abrir conexão, fechar e inserir comandos.
Olhem nossa classe de acesso, percebam que ela permite todas operações com a tabela Pessoa(Está no pacote dao):

Eu, particularmente, costumo criar classes que herdam de um pai(ou implementam uma interface) DAO, para evitar repetir código, mas como temos somente uma tabela(entidade para alguns) iremos usar esse DAO específico, o DaoPessoa.

Quanto ao código não temos segredo. Primeiro conectamos, com nossa conexão criamos um comando. Depois do comando enviamos uma String que corresponde ao comando de banco de dados(como o DELETE, INSERT, SELECT e UPDATE). Perceba que para cada comando tem um tratamento de exceção, assim identificamos o erro "na lata"!

Os nossos métodos de busca retornam um Vector de pessoas, poderíamos utilizar outra estutura de armazenamento múltiplo(Collection), como o ArrayList...

Para mostrar o erro usamos um método, assim encapsulamos como o erro será exibido(pois podemos não querer sair do programa, ou exibir o erro no console ou uma janela de diálogo...), sem problemas!

Agora chegou a hora mais interessante, vamos testar o que fizemos até agora:


Nada demais neste teste, estamos inserindo uma pessoa, depois buscando para ver se ela foi inserida mesmo! Em seguida atualizamos o nome e buscamos para ver se aconteceu a atualização, por fim apagamos a pessoa e tentamos realizar a busca para ter certeza que nosso dado foi apagado mesmo!
Ao rodar essa classe você deve obter o seguinte resultado no console:

Quote:

Conectado!
Inserida!
Conexão Fechada
Conectado!
Pessoa Encontrada: José da Silva
Conectado!
Atualizada!
Conexão Fechada
Conectado!
Pessoa Encontrada: José da Silva Sauro
Conectado!
Conexão Fechada
Conectado!
Pessoa foi apagada com sucesso


Se você não conseguiu, volte e tente fazer tudo desde o começo!

Chegamos ao fim desse primeiro tutorial, nossas classes ficaram como mostrado abaixo:

0






Não percam a segunda parte, onde mostraremos uma segunda forma de realizar essas mesmas funcionalidade, demonstrando problemas e erros futuros que essa parte poderia apresentar
(Obrigado a todos que opinaram e as grandes críticas construtivas)





Quem quiser terminar o que foi implementado até agora e mostrar para o pessoal, fique a vontade! Mostre suas habilidades em alguma das tecnologias abaixo, usando esse DAO:

-Java Swing
-JSP
-JavaFX
-WebServices(Oferecer o acesso como um serviço)
-Uso com algum FrameWork(Struts, JSF...)
-Outros...

A idéia é demonstrar diversas tecnologias com esse exemplo simples, assim teremos "um pontapé" para aprendizado.


Artigos desta série:
Acessando dados com Java: 1º parte - Simples Dao
Acessando Dados com Java: Parte 2 - Prevendo problemas
Acessando Dados com Java: Parte 3 - Hibernate Annotations




Leia também:
Acessando Banco de Dados em Java (PARTE 1)
Acessando Banco de Dados em Java (PARTE 2)
Acessando Banco de Dados em Java (PARTE 3)



Quer aprender mais sobre Java?
O que é Java?
Características Básicas
Orientação a Objetos



Tutoriais para Certificação Java
Fundamentos da Linguagem
Modificadores
Operadores e atribuições
Controle de Fluxo
Orientação a Objetos
Java Lang e Wrappers
Objetos e Conjuntos
Classes Internas
Threads (Segmentos)