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 )
);