Exercício 1
Neste exercício vamos abordar como criar uma aplicação CRUD (salvar, alterar, consultar e excluir) do Livro utilizando o Java Persistence API.
Crie o seguinte banco de dados e a tabela de Livro:
CREATE DATABASE jpaexercicio1;
USE jpaexercicio1;
CREATE TABLE Livro (
id int NOT NULL AUTO_INCREMENT,
titulo varchar(200) NOT NULL,
autor varchar(200) NOT NULL,
isbn varchar(50) NOT NULL,
paginas int NOT NULL,
preco double(10,2) NOT NULL,
primary key(id)
);
Crie um Projeto Java chamado ExercicioJPA1, adicione as bibliotecas Hibernate JPA e MySQL JDBC Driver e crie:
Dado a seguinte classe para representar a tabela Livro, adicione as anotações do JPA necessário.
package br.universidadejava.jpa.exercicio1.modelo;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
public class Livro implements Serializable {
private static final long serialVersionUID = 2405106626392673061L;
private Long id;
private String titulo;
private String autor;
private String isbn;
private Integer paginas;
private Double preco;
public String getAutor() {
return autor;
}
public void setAutor(String autor) {
this.autor = autor;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getIsbn() {
return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
public Integer getPaginas() {
return paginas;
}
public void setPaginas(Integer paginas) {
this.paginas = paginas;
}
public Double getPreco() {
return preco;
}
public void setPreco(Double preco) {
this.preco = preco;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
}
Crie uma classe LivroDAO com os seguintes métodos:
- getEntityManager() – que cria um EntityManager
- salvar() – chame o método do EntityManager que realize a operação de salvar ou alterar um livro.
- consultarPorId() – chame o método do EntityManager que realize a operação de consultar passando o atributo da chave primaria.
- excluir() – chame o método do EntityManager que realize a operação de remover um livro.
package br.universidadejava.jpa.exercicio1.dao;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import br.universidadejava.jpa.exercicio1.modelo.Livro;
public class LivroDAO {
/**
* Método utilizado para obter o entity manager.
* @return
*/
private EntityManager getEntityManager() {
//TODO - Adicionar código para criar uma EntityManager, utilize a unidade de persistência criada no próximo passo.
}
/**
* Método utilizado para salvar ou atualizar as informações de um livro.
* @param livro
* @return
* @throws java.lang.Exception
*/
public Livro salvar(Livro livro) throws Exception {
//TODO - Adicionar código para montar o método que salva um Livro.
}
/**
* Método que exclui o livro do banco de dados.
* @param id
*/
public void excluir(Long id) {
//TODO - Adicionar código para montar o método que remove um Livro a partir do seu ID.
}
/**
* Consulta o livro pelo ID.
* @param id
* @return
*/
public Livro consultarPorId(Long id) {
//TODO - Adicionar código para montar o método que consulta o Livro por ID.
}
}
Vamos criar um arquivo persistence.xml dentro da pasta META-INF para guardar as configurações do banco de dados. Neste arquivo também vamos informar a Entity Livro.
<?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="ExercicioJPA1PU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>br.universidadejava.jpa.exercicio1.modelo.Livro</class>
<properties>
<property name="hibernate.connection.username" value="usuario"/>
<property name="hibernate.connection.password" value="senha"/>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/jpaexercicio1"/>
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
<property name="hibernate.show_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>
Para testar as operações sobre a entidade Livro, vamos criar uma classe LivroTeste onde utilizamos o LivroDAO que fará uso da EntityManager para gerenciar a entity Livro.
package br.universidadejava.jpa.exercicio1.teste;
import br.universidadejava.jpa.exercicio1.dao.LivroDAO;
import br.universidadejava.jpa.exercicio1.modelo.Livro;
public class LivroTeste {
public static void main(String[] args) {
try {
//Montar um objeto Livro.
Livro livro = new Livro();
livro.setAutor("Rafael Guimarães Sakurai");
livro.setIsbn("111-11-1111-111-1");
livro.setPaginas(439);
livro.setPreco(30.90);
livro.setTitulo("Guia de estudos para certificação SCJA.");
LivroDAO dao = new LivroDAO();
//Chama o método do DAO que salva o Livro no banco de dados.
livro = dao.salvar(livro);
System.out.println("ID do livro salvo: " + livro.getId());
/*
* TODO - Teste a consulta, alteração e exclusão do livro.
*/
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
Exercício 2
Crie uma aplicação Swing ou Console utilizando JPA para fazer o CRUD (salvar, alterar, consultar e excluir) da tabela Produto a seguir:
CREATE TABLE Produto (
id int NOT NULL auto_increment,
nome varchar(200) NOT NULL,
preco double(10,2) NOT NULL,
dataValidade date,
qtdEstoque int,
primary key(id)
);
Conteúdos relacionados
- Mais exercícios com JPA
- Definindo relacionamento de Um-para-Muitos entre entidades no JPA
- Usando Query do JPA
- Criando um HelloWorld com EJB 3.0 na IDE NetBeans