Neste artigo criaremos um pequeno exemplo utilizando a jpa.
A JPA (Java Persistence API) faz o mapeamento objeto-relacional, ou seja, traduz o mundo objetos do java para o mundo relacional dos bancos de dados.
Trata-se apenas de uma especificação, ou seja, a implementação ficará por conta de terceiros como:
Em nosso exemplo utilizaremos o Hibernate. Para obtê-lo é necessário fazer o download de algumas bibliotecas do site http://hibernate.org:
Ao descompactar estes arquivos observa-se uma grande quantidade de .jar's. Após fazer alguns testes notei que os imprescindíveis são:
antlr-2.7.6.jar asm.jar cglib-2.1.3.jar commons-collections-2.1.1.jar commons-logging-1.0.4.jar dom4j-1.6.1.jar hibernate-annotations.jar hibernate-commons-annotations.jar hibernate-entitymanager.jar hibernate3.jar javassist.jar jboss-archive-browsing.jar jta.jar persistence.jarInicialmente criaremos a classe contato. Observe no código abaixo a existência de algumas anotações.
@EntityDefine uma entidade. Usamos esta anotação para dizer que a classe anotada é uma entidade, portanto, será persistida no banco de dados.
@IdDefine o campo que conterá o identificador da entidade. Será a chave primaria da tabela.
@GeneratedValue(strategy=SEQUENCE, generator = "geradorPessoa") @SequenceGenerator(name="geradorPessoa", sequenceName = "gerador_pessoa")Configurações para utilizar um Sequence do banco de dados.
Classe Contato
package org.jchico.jpa;
import static javax.persistence.GenerationType.SEQUENCE;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
@Entity
public class Contato {
@Id
@GeneratedValue(strategy=SEQUENCE, generator = "geradorPessoa")
@SequenceGenerator(name="geradorPessoa", sequenceName = "gerador_pessoa")
private int codigo;
private String nome;
private String telefone;
private String endereco;
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
}Agora criaremos a classe TesteContatoJpa. Esta classe será responsável por persistir os contatos. Note a necessidade da existência do EntityManager. Ele é o gerenciador de entidades. Este gerenciador é capaz de persistir, listar, remover, alterar, etc as entidades.
EntityManagerFactory emf = Persistence.createEntityManagerFactory("exemplo");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
Para fazer consultas é necessário utilizar a JPAQL:
Query query = em.createQuery("select e from Contato e");
Classe TesteContatoJpa
package org.jchico.jpa;
import java.util.List;
import java.util.Scanner;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.persistence.Query;
public class TesteContatoJpa {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("exemplo");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
//cria um contato e ajusta seus valores
Contato contato = new Contato();
Scanner scan = new Scanner(System.in);
System.out.print("\nDigite o nome:");
contato.setNome(scan.nextLine());
System.out.print("\nDigite o endereço:");
contato.setEndereco(scan.nextLine());
System.out.print("\nDigite o telefone:");
contato.setTelefone(scan.nextLine());
//adiciona um contato no banco
tx.begin();
em.persist(contato);
tx.commit();
//listar os contatos
Query query = em.createQuery("select e from Contato e");
List<Contato> listaContatos = query.getResultList();
for(Contato c : listaContatos){
System.out.printf("%20s %20s %20s", c.getNome(), c.getEndereco(), c.getTelefone());
}
}
}Agora veja o persistence.xml abaixo. Este arquivo deverá ficar no diretório META-INF da sua aplicação. Neste arquivo realizamos as configurações necessárias para a JPA, como o driver do banco, a url, usuario e senha.
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="exemplo">
<class>org.jchico.jpa.Contato</class>
<properties>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
<property name="hibernate.connection.username" value="sa"/>
<property name="hibernate.connection.password" value=""/>
<property name="hibernate.connection.url" value="jdbc:hsqldb:hsql://localhost/exemplo"/>
<property name="hibernate.show_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>
Espero que você tenha gostado desta informação.
3 comentários:
chico, foi boa a maneira a qual vc abordou o assunto, fazendo comentarios, mostrando habilidade de expor o assunto.
Está bom..e continue mandando informações, tanto para profissionais
avançados quanto para os que começando.
tudo bem francisco...
faça um video de jpa com mysql..
obrigado.
Ainda bem que tinha o endereço do seu blog e após meses de curso posso consultar/relembrar da aulaJpa. Continue escrevendo!
Postar um comentário