[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).
- 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());
new CompraJpaController(EmProvider
.getInstance()
.getEntityManagerFactory());
c.create(c1);
compras.add(c1);
p.setCompraList(compras);
PessoaJpaController j =
new PessoaJpaController(EmProvider
.getInstance()
.getEntityManagerFactory());
new PessoaJpaController(EmProvider
.getInstance()
.getEntityManagerFactory());
j.create(p);
System.out.println(j.findPessoaEntities());
}
}
Passo 8 - Teste!
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.
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
Reviewed by Vinicius dos Santos
on
08:19:00
Rating:
![[Exercícios] Java Persistence Api (JPA) + Hibernate - Exercício prático](https://2.bp.blogspot.com/-UJ5Dz2ZuuC0/W55mNr1KoKI/AAAAAAAAEiM/OXzUXnHSQv0WCJK8bcOmhQXXo1HzBxeGwCLcBGAs/s72-c/Exercicio%2BJPA.jpg)
Post a Comment