exemplo de dao (crud) utilizando jpa - public class universidadejava {

Upload: ze-carlos-xavier

Post on 04-Apr-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/29/2019 Exemplo de DAO (CRUD) Utilizando JPA - Public Class UniversidadeJava {

    1/5

    public class

    UniversidadeJava

    {

    docs >

    Exemplo de DAO (CRUD) utilizando JPApostado em 21/02/2011 03:53 por Rafael Sakurai [ 13/03/2011 09:24 atualizado(s) ]

    Nesse exemplo vamos salvar, alterar, consultar por id e apagar um registro de pessoa, utilizaremos o

    banco de dados MySQL.

    OBS: Lembre de adicionar as bibliotecas do Hibernate e MySQL.

    Vamos criar uma Entity para representar a tabela Pessoa abaixo:

    CREATE DATABASE exemplos;

    USE exemplos;

    CREATE TABLE Pessoa (id INT NOT NULL AUTO_INCREMENT,nome VARCHAR(100) NOT NULL,

    dataNasc DATE NOT NULL,email VARCHAR(150),primary key(id)

    );

    Criando a entity para representar a tabela Pessoa:

    package br.universidadejava.jpa.exemplo1.modelo;

    import java.util.Date;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;

    import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Temporal;import javax.persistence.TemporalType;

    /*** Classe utilizada para representar uma pessoa.*/@Entitypublic class Pessoa { @Id@GeneratedValue(strategy = GenerationType.AUTO)private Long id;

    @Column(nullable = false)private String nome;

    @Temporal(TemporalType.DATE)@Column(name = "dataNasc", nullable = false)private Date dataNascimento;private String email;

    mplo de DAO (CRUD) utilizando JPA - public class UniversidadeJ... http://www.universidadejava.com.br/docs/exemplodedaocrudutilizandojpa

    5 15/09/2012 08:44

  • 7/29/2019 Exemplo de DAO (CRUD) Utilizando JPA - Public Class UniversidadeJava {

    2/5

    public Date getDataNascimento() {return dataNascimento;

    }public void setDataNascimento(Date dataNascimento) {this.dataNascimento = dataNascimento;

    }public String getEmail() {return email;

    }

    public void setEmail(String email) {this.email = email;

    }public Long getId() {return id;

    }public void setId(Long id) {this.id = id;

    }public String getNome() {return nome;

    }public void setNome(String nome) {this.nome = nome;

    }}

    Vamos criar o arquivo persistence.xml .

    org.hibernate.ejb.HibernatePersistence

    br.universidadejava.jpa.exemplo1.modelo.Pessoa

  • 7/29/2019 Exemplo de DAO (CRUD) Utilizando JPA - Public Class UniversidadeJava {

    3/5

    private EntityManager getEntityManager() {EntityManagerFactory factory = null;EntityManager entityManager = null;try {//Obtm o factory a partir da unidade de persistncia.factory = Persistence.createEntityManagerFactory("ExemplosJPAPU");//Cria um entity manager.entityManager = factory.createEntityManager();//Fecha o factory para liberar os recursos utilizado.

    } finally {factory.close();

    }return entityManager;

    }

    /*** Mtodo utilizado para salvar ou atualizar as informaes de uma

    pessoa.* @param pessoa* @return* @throws java.lang.Exception*/public Pessoa salvar(Pessoa pessoa) throws Exception {EntityManager entityManager = getEntityManager();try {// Inicia uma transao com o banco de dados.entityManager.getTransaction().begin();System.out.println("Salvando a pessoa.");// Verifica se a pessoa ainda no est salva no banco de dados.if(pessoa.getId() == null) {//Salva os dados da pessoa.entityManager.persist(pessoa);

    } else {//Atualiza os dados da pessoa.pessoa = entityManager.merge(pessoa);

    }// Finaliza a transao.entityManager.getTransaction().commit();

    } finally {entityManager.close();

    }return pessoa;

    }

    /*** Mtodo que apaga a pessoa do banco de dados.* @param id*/public void excluir(Long id) {EntityManager entityManager = getEntityManager();try {// Inicia uma transao com o banco de dados.entityManager.getTransaction().begin();

    // Consulta a pessoa na base de dados atravs do seu ID.Pessoa pessoa = entityManager.find(Pessoa.class, id);System.out.println("Excluindo os dados de: " + pessoa.getNome());// Remove a pessoa da base de dados.entityManager.remove(pessoa);// Finaliza a transao.entityManager.getTransaction().commit();

    } finally {entityManager.close();

    }}

    /*** Consulta o pessoa pelo ID.* @param id

    * @return o objeto Pessoa.*/public Pessoa consultarPorId(Long id) {EntityManager entityManager = getEntityManager();Pessoa pessoa = null;try {

    mplo de DAO (CRUD) utilizando JPA - public class UniversidadeJ... http://www.universidadejava.com.br/docs/exemplodedaocrudutilizandojpa

    5 15/09/2012 08:44

  • 7/29/2019 Exemplo de DAO (CRUD) Utilizando JPA - Public Class UniversidadeJava {

    4/5

    //Consulta uma pessoa pelo seu ID.pessoa = entityManager.find(Pessoa.class, id);

    } finally {entityManager.close();

    }return pessoa;

    }}

    O mtodo salvar recebe o objeto Pessoa que ser salvo, neste exemplo usaremos este mtodo

    salvar uma nova pessoa ou atualizar os dados de uma nova pessoa.

    Mas como sabemos quando temos que salvar e quando tem que atualizar, basta olhar o atributo id da

    classe Pessoa, se o id for null significa que um novo objeto que ainda no foi salvo no banco de

    dados, ento utilizaremos o mtodo persist da EntityManager para salv-lo, caso o id tenha algum

    valor ento significa que o objeto j foi salvo anteriormente portanto ele deve ser atualizado ento

    utilizaremos o mtodo merge da EntityManager para atualiza-lo.

    Note que como vamos salvar ou atualizar os dados, precisamos criar uma transao, com o mtodo

    getTransaction() do EntityManager obtemos um objeto EntityTransaction com ele podemos iniciar a

    transao atravs do mtodo begin(), f inalizar a transao com sucesso atravs do mtodo commit()ou desfazer as alteraes em caso de erro com o mtodo rolback(). Este mesmo conceito de

    transao ser utilizado no mtodo excluir.

    O mtodo excluir no precisa receber todos os dados da Pessoa, recebendo apenas o seu ID

    atravs do parametro Long id, podemos utilizar o mtodo find do EntityManager para consultar os

    dados da Pessoa, depois com o objeto Pessoa consultado podemos usar o mtodo remove do

    EntityManager para apagar os dados da Pessoa.

    O mtodo consultarPorId recebe um objeto Long chamado id, com o ID da tabela Pessoa, utilizando

    o mtodo find do EntityManager passamos a classe da entidade Pessoa.class e seu id para que

    possamos consultar os dados da Pessoa.

    Vamos criar uma classe PessoaDAOTeste para testarmos os mtodos da classe PessoaDAO:

    package br.universidadejava.jpa.exemplo1.teste;

    import java.util.Calendar;import java.util.GregorianCalendar;import br.universidadejava.jpa.exemplo1.dao.PessoaDAO;import br.universidadejava.jpa.exemplo1.modelo.Pessoa;

    /*** Classe utilizada para testar os mtodos do PessoaDAO.*/

    public class PessoaDAOTeste {public static void main(String[] args) throws Exception {Pessoa pessoa = new Pessoa();pessoa.setNome("Rafael Sakurai");Calendar data = new GregorianCalendar();data.set(Calendar.YEAR, 1983);data.set(Calendar.MONTH, 11);data.set(Calendar.DAY_OF_MONTH, 26);pessoa.setDataNascimento(data.getTime());pessoa.setEmail("[email protected]");

    PessoaDAO dao = new PessoaDAO();System.out.println("Salvando a pessoa: " + pessoa.getNome());pessoa = dao.salvar(pessoa);

    pessoa.setNome("Rafael Guimares Sakurai");pessoa = dao.salvar(pessoa);System.out.println("Alterando a pessoa: " + pessoa.getNome());

    Pessoa pessoa2 = dao.consultarPorId(pessoa.getId());System.out.println("Consultando: " + pessoa2.getNome());

    mplo de DAO (CRUD) utilizando JPA - public class UniversidadeJ... http://www.universidadejava.com.br/docs/exemplodedaocrudutilizandojpa

    5 15/09/2012 08:44

  • 7/29/2019 Exemplo de DAO (CRUD) Utilizando JPA - Public Class UniversidadeJava {

    5/5

    System.out.println("Removendo a pessoa: " + pessoa.getId());dao.excluir(pessoa.getId());

    }}

    Neste teste vamos criar um objeto pessoa e salva-lo, depois vamos altera o nome da pessoa, vamos

    consultar a pessoa pelo id e no final vamos apagar o registro da pessoa.

    Fazer login | Denunciar abuso | Imprimir pgina | Remover acesso | Tecnologia Google Sites

    mplo de DAO (CRUD) utilizando JPA - public class UniversidadeJ... http://www.universidadejava.com.br/docs/exemplodedaocrudutilizandojpa