[Exercícios] Java Persistence Api (JPA) + Hibernate - Exercício prático

Regras do exercício:

- Neste exercício você deverá ler todo o enunciado e ao final entregar o código Java que supre todas os requisitos descrito.
- Você pode utilizar IDEs de programação (NetBeans, eclipse, etc...), no entanto, é fortemente recomendado que você compreenda TODOS os códigos gerados pela IDE. O risco de se acomodar é seu.
- Recomendamos que você utilize no mínimo 2 bases de dados diferentes para testar o funcionamento do JPA (MySQL e Postgres são as mais comuns).


Diagrama de classes proposto no exercício

1-  Compreendendo a lógica que deve ser implementada. 

Neste exercício você irá criar um conjunto de entidades com um relacionamento muito simples. As entidades serão: Pessoa (contendo: id, loggin, senha, email, nome); Compra (contendo: id, valor, data, observacao). 

Essa lógica representa o relacionamento que um cliente tem em qualquer loja onde ele pode realizar uma compra. Um cliente pode ter várias compras, no entanto, uma compra pode pertencer a apenas um cliente.


2- Quais bibliotecas você pode (deve) utilizar


Para completar este exercício você deverá utilizar o JPA 2.x como especificação. Como implementação do JPA você pode escolher entre o Hibernate e o eclipselink. As bases de dados ficam a sua escolha, porém recomendamos o Postgres e o MySQL. 


3- Sugestão de passos para completar o exercício


Passo 1 - Faça a instalação das IDE's, Banco de dados e configure o Java.
Passo 2 - Crie um projeto em sua IDE de preferência
Passo 3 - Adicione as bibliotecas necessárias ( JPA, Hibernate ou eclipselink, Driver do banco de dados) 
Passo 4 - Crie as classes de entidade, por exemplo:

@Entity
@Table(name = "compra")
public class Compra implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    @Column(name = "valor")
    private String valor;
    @Column(name = "data")
    @Temporal(TemporalType.DATE)
    private Date data;
    @Column(name = "observacao")
    private String observacao;
    @Column(name = "recebido")
    private Boolean recebido;

    {{getters and setters}}

}

Passo 5 - Crie os controladores contendo os métodos:

public class CompraJpaController{
          public void create(){}
          public void edit(){}
          public void destroy(){}
          public void findAll(){}
          public void findById(){}
}

OBS: crie uma classe para construção de Entitys managers:


public class EmProvider {

  private static final String DB_PU = "AplicacaoAulaPU";


    public static final boolean DEBUG = true;

    private static final EmProvider singleton = new EmProvider();
    private EntityManagerFactory emf;

    private EmProvider() {}

    public static EmProvider getInstance() {
        return singleton;
    }


    public EntityManagerFactory getEntityManagerFactory() {
        if(emf == null) {
            emf = Persistence.createEntityManagerFactory(DB_PU);
        }
        if(DEBUG) {
            System.out.println("factory created on: " + new Date());
        }
        return emf;
    }

    public void closeEmf() {
        if(emf.isOpen() || emf != null) {
            emf.close();
        }
        emf = null;
        if(DEBUG) {
            System.out.println("EMF closed at: " + new Date());
        }
    }
}

Passo 6 - Crie uma classe de teste contendo um simples método Main();
Passo 7 -  Dentro da classe Main(), faça:

public class TestandoPersistencia {

    public static void main(String[] args) {

        Pessoa p = new Pessoa();

        Date d = new Date();

        p.setNome("Isabela");
        p.setLoggin("isabela tal");
        p.setEmail("icastilhog@gmail.com");
        p.setSenha("teste");

        List<Compra> compras = new ArrayList<>();

        Compra c1 = new Compra();
        c1.setData(d);
        c1.setObservacao("compra impressora");
        c1.setRecebido(true);
        c1.setValor("890");
        CompraJpaController c = 
              new CompraJpaController(EmProvider
                                       .getInstance()
                                       .getEntityManagerFactory());
        c.create(c1);
        compras.add(c1);
        
        p.setCompraList(compras);
        
        PessoaJpaController j = 
              new PessoaJpaController(EmProvider
                                     .getInstance()
                                     .getEntityManagerFactory());
        j.create(p);

        System.out.println(j.findPessoaEntities());
    }
}

Passo 8 - Teste!


Faça download do exercício resolvido no github:







DESAFIO!

1) Agora que você já sabe como implementar essa lógica, o desafio é incrementar sua loja utilizando JPA. Agora você irá registrar os itens que foram compradas seguindo a ideia do seguinte diagrama de entidades:



2) Pesquise sobre a annotation @ElementCollection e tente implementar um modelo (talvez mais simples de item) que realize a mesma lógica apresentada no desafio 1.

Dica: Veja este vídeo.





[Exercícios] Java Persistence Api (JPA) + Hibernate - Exercício prático [Exercícios] Java Persistence Api (JPA) + Hibernate - Exercício prático Reviewed by Vinicius dos Santos on 08:19:00 Rating: 5

Nenhum comentário

Escreve ai sua opinião!