olá
pessoal, nesse post vou apresentar como fazer persistência
de dados
usando 100% JPA com Java Básico. O objetivo é ajudar aqueles
que estão dando o primeiro passo com a tecnologia.
Recomendação: Você vai precisar configurar a JPA no seu
projeto Java, portanto veja no post abaixo:
*Basta
adicionar ao seu projeto o arquivo .jar referente a JPA do pacote
hibernate annotations.
Post recomendado: JPA JBoss
Preparando o ambiente desenvolvimento
-
crie um Java project no eclipse
-
E monte conforme a estrutura abaixo:

- A classe TesteJPA ela deve conter o método main.
-
Não esqueça de adicionar o .jar ao seu projeto. Se tem dúvida com
fazer isso veja nos posts citados acima.
Preparando Banco de Dados
Vamos usar o MySql como BD e vou levar em conta que você já tem o
mesmo instalado e configurado. Crie apensa um DataBase e uma table
para este. Se quiser seguir o exemplo do post o nosso ficou assim:
DataBase: sistemas Table: Cliente
A tabela cliente possui os seguintes campos como
VARCHAR(nome,cidade,sobrenome)e um Integer(id). O id é
auto_increment e chave-primaria da tabela.
Desenvolvimento
Explicando
as anotações
@Entity=
é uma entidade que representa uma class
bean;
@Table
=
mapeia com o nome da tabela. Aqui eu coloquei o table
para explicar, mas poderia omitir levando em conta que eu teria uma
table no
meu BD com o mesmo nome da minha class
Bean.
Ou seja, se você não especificar qual será a tabela do BD, será
considerada o nome do Bean. Tenha atenção se você tem tabelas com
nomes diferentes em relação ao seu bean;
@Id
=tem
relação com a chave primaria da sua tabela;
@Column
=
mapeia com as colunas da sua tabela, segue a mesma regra de table,
quando ter colunas com nomes diferentes este campo eh obrigatório,
caso contrario non-required
;
1. Deixe sua classe Cliente.java conforme abaixo:
package br.com.bean;<br />import javax.persistence.Entity;<br />import javax.persistence.GeneratedValue;<br />import javax.persistence.GenerationType;<br />import javax.persistence.Id;<br />import javax.persistence.Table;<br />@Entity<br />@Table(name="cliente")<br />public class Cliente {<br />@Id<br />@GeneratedValue(strategy=GenerationType.IDENTITY)<br /> private int id;<br /> private String nome;<br /> private String cidade;<br /> private String sobrenome;<br /><br /> public int getId() {<br /> return id;<br /> }<br /> public void setId(int id) {<br /> this.id = id;<br /> }<br /> public String getNome() {<br /> return nome;<br /> }<br /> public void setNome(String nome) {<br /> this.nome = nome;<br /> }<br /> public String getCidade() {<br /> return cidade;<br /> }<br /> public void setCidade(String cidade) {<br /> this.cidade = cidade;<br /> }<br /> public String getSobrenome() {<br /> return sobrenome;<br /> }<br /> public void setSobrenome(String sobrenome) {<br /> this.sobrenome = sobrenome;<br /> } }-
A classe ClienteDAO é responsável
por implementar o CRUD usando a JPA, vamos ver aqui o salvar,
excluir e atualizar.
Então atualize seu arquivo ClienteDAO.java
conforme abaixo:
package br.com.dao;<br /><br />import javax.persistence.EntityManager;<br />import javax.persistence.EntityManagerFactory;<br />import javax.persistence.Persistence;<br /><br />import br.com.bean.Cliente;<br /><br />public class ClienteDAO {<br /><br /> EntityManagerFactory emf; <br /><br /> private EntityManager getEntityManager(){<br /> return emf.createEntityManager();<br /> }<br /> public ClienteDAO() {<br /> emf = Persistence.createEntityManagerFactory("sistemas");<br /> }<br /><br /> public void salvar(Cliente cliente){<br /> EntityManager em = getEntityManager();<br /> try{<br />em.getTransaction().begin(); //inicia o processo de transacao<br />em.persist(cliente);//permite fazer insercoes e atualizacoes no bd<br />em.getTransaction().commit();//realizo as alteracoes no banco<br /> }catch (Exception e) {<br />em.getTransaction().rollback();// se rolar uma excecao cancelo acao<br />e.printStackTrace();//mostro o percurso de onde veio as excecoes<br /> }finally{<br /> em.close();<br /> }<br /> }<br /> public void excluir(Cliente cliente){<br /> EntityManager em = getEntityManager();<br /><br /> try{<br /> em.getTransaction().begin();<br /> cliente = em.merge(cliente);<br /> em.remove(cliente);<br /> em.getTransaction().commit();<br /> }catch (Exception e) {<br /> em.getTransaction().rollback();<br /> }<br /> }<br /> public void atualizar(Cliente cliente){<br /> EntityManager em = getEntityManager();<br /> try{<br /> em.getTransaction().begin();<br /> em.merge(cliente);<br /> em.getTransaction().commit();<br /> }catch (Exception e) {<br /> em.getTransaction().rollback();<br /> }}<br /> }-
Fazendo a persistência de dados no arquivo persistence.xml.
Precisamos passar as informações do BD, user, password etc para o
arquivo persistence.xml, assim conseguimos a conexao com o
nosso BD. Então atualize o arquivo .xml conforme o code abaixo:
org.hibernate.ejb.HibernatePersistence<br />< persistence-unit name="sistemas" transaction-type="RESOURCE_LOCAL"><br />org.hibernate.ejb.HibernatePersistence<br /> <!-- Voce tem que dizer ao persistence.xml onde esta a sua entidade --><br /> br.com.bean.Cliente<br /><br /> <!--Configuracoes de dialeto e conexao--><br /> < property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect" /><br /> < property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /><br /> < property name="hibernate.connection.url" value="jdbc:mysql://localhost/sistemas" /><br /> < property name="hibernate.connection.username" value="camilo" /><br /> < property name="hibernate.connection.password" value="integrator" /><br /> <!--Configuracoes de Debug--><br /> < property name="hibernate.show_sql" value="true" /><br /> < property name="hibernate.format_sql" value="true" /><br /> < property name="use_sql_comments" value="true" /><br /><br /> < /properties><br /><br /> < /persistence-unit>-
Atualizando a classe TesteCliente.java. Precisamos ter uma classe
para testar o nosso CRUD com JPA. Para isso teremos uma classe java
tradicional com o método main. Eu comentei algumas linhas apenas
para poder testar outros recursos. Mas, levando em conta que sua
table não há nenhuma informação, vamos executar primeiramente a
opção salvar.
package br.com.teste;<br /><br />import br.com.bean.Cliente;<br />import br.com.dao.ClienteDAO;<br /><br />public class TesteCliente {<br /><br /> /**<br /> * @param args<br /> */<br /> public static void main(String[] args) {<br /> ClienteDAO clidao = new ClienteDAO();<br /> Cliente cliente = new Cliente();<br /> // cliente.setCidade("salvador");<br /> cliente.setNome("recife");<br /> cliente.setSobrenome("neto");<br /> //cliente.setId(12);<br /> clidao.salvar(cliente);<br /> //clidao.excluir(cliente);<br /> //cliente.setCidade("Sao Paulo");<br /> //cliente.setId(15);<br /> //clidao.atualizar(cliente);<br /> }<br />}Não Esqueça:
- Esteja certo que você deu um start no seu BD.
- não esqueça dos .jars no seu projeto.
Verificando dados no BD
-
Acesse seu banco de dados e veja
se a informação inserida realmente consta na tabela. Aqui usei uma
ferramenta chamada Mysql
Query Browser para
facilitar o trabalho com o BD.
Vou ficado por aqui e espero que tenham gostado
do post. Para quem está em primeiro contato com a tecnologia pode
parecer difícil, estranho ou complicado a estrutura JPA, mas
pode ter certeza que realmente é algo bem produtivo que fazer o DAO
na mão grande e melhor ainda usar JPA sem Hibernate.
Abraços e até o próximo post.







