A maior rede de estudos do Brasil

Grátis
176 pág.
Apostila de Aplicações Hibernate EJB JPA

Pré-visualização | Página 21 de 25

a persistência:
package br.com.ead.helper;
import javax.persistence.EntityManager;
import br.com.ead.entity.Forum;
import br.com.ead.entity.Usuario;
public class ForumHelper {
 private EntityManager em;
 
 public ForumHelper(EntityManager em){
 this.em = em;
 }
 
 public String salvar(Forum forum){
 try{
 em.getTransaction().begin();
 em.persist(forum);
Aplicações Com Hibernate, EJB e JPA
143
 em.getTransaction().commit();
 return “Forum salvo”;
 }catch(Exception e){
 return e.getMessage();
 }
 }
 
 public String adicionarUsuario(int idForum, Usuario usuario){
 try {
 Forum f = em.find(Forum.class, idForum);
 usuario.setForum(f); 
 f.getUsuarios().add(usuario);
 em.getTransaction().begin();
 em.persist(f);
 em.getTransaction().commit();
 return “Inclusao realizada”;
 } catch(Exception e){
 return e.getMessage();
 }
 } 
}
• Para testar a aplicação, criar um fórum e três usuários, associando cada usuário ao fórum criado:
package br.com.ead.programa;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import br.com.ead.entity.Forum;
import br.com.ead.entity.Usuario;
import br.com.ead.helper.ForumHelper;
public class TesteForum {
 public static void main(String[] args) {
 EntityManagerFactory emf = Persistence.createEntityManagerFactory(“Forum”);
 EntityManager em = emf.createEntityManager();
 ForumHelper dao = new ForumHelper(em);
 
 Forum forum = new Forum();
 forum.setAssunto(“JPA”);
 forum.setDescricao(“Java Persistence API”);
Aplicações Com Hibernate, EJB e JPA
144
 System.out.println(dao.salvar(forum));
 
 Usuario usuario = new Usuario();
 usuario.setNome(“Joaquim”);
 usuario.setEmail(“joaquim@ead.com.br”);
 
 System.out.println(dao.adicionarUsuario(forum.getId(), usuario));
 
 } 
}
Exercício 2
Com base no Exercício1, criar uma aplicação para a persistência de clientes e pedidos, usando anotações 
JPA. O modelo é dado a seguir. É necessário criar a aplicação completa!
• Com base neste modelo, criar as entidades Clientes e Pedidos:
Entidade Clientes:
package br.com.entity;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
Aplicações Com Hibernate, EJB e JPA
145
@Entity
@Table(name=”clientes”)
public class Clientes implements Serializable{
 
 @Id
 @GeneratedValue(strategy = GenerationType.AUTO)
 @Column(name = “IDCLIENTE”)
 private int id;
 
 @Column(name = “NOME”)
 private String nome;
 
 @Column(name = “EMAIL”)
 private String email;
 
 @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = “cliente”)
 private Set<Pedidos> pedidos = new HashSet<Pedidos>();
 
 public Set<Pedidos> getPedidos() {
 return pedidos;
 }
 public void setPedidos(Set<Pedidos> pedidos) {
 this.pedidos = pedidos;
 }
 public int getId() {
 return id;
 }
 public void setId(int id) {
 this.id = id;
 }
 public String getNome() {
 return nome;
 }
public void setNome(String nome) {
 this.nome = nome;
 }
 public String getEmail() {
 return email;
 }
 public void setEmail(String email) {
 this.email = email;
 } 
Aplicações Com Hibernate, EJB e JPA
146
}
Entidade Pedidos
package br.com.ead.entity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
package br.com.entity;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name=”clientes”)
public class Pedidos implements Serializable{
 @Id
 @GeneratedValue(strategy = GenerationType.AUTO)
 @Column(name = “IDUSUARIO”)
 private int id;
 
 @Column(name = “DATA”)
 private Date data;
 
 @Column(name = “DESCRICAO”)
 private String descricao;
Aplicações Com Hibernate, EJB e JPA
147
 
 @Column(name = “VALOR”)
 private double valor;
 
 @ManyToOne(fetch = FetchType.LAZY)
 @JoinColumn(name = “IDCLIENTE”)
 private Clientes cliente;
 public int getId() {
 return id;
 }
 public void setId(int id) {
 this.id = id;
 }
 public Date getData() {
 return data;
 }
 public void setData(Date data) {
 this.data = data;
 }
 public String getDescricao() {
 return descricao;
 }
 public void setDescricao(String descricao) {
 this.descricao = descricao;
 }
 public double getValor() {
 return valor;
 }
 public void setValor(double valor) {
 this.valor = valor;
 }
 public Clientes getCliente() {
 return cliente;
 }
Aplicações Com Hibernate, EJB e JPA
148
 public void setCliente(Clientes cliente) {
 this.cliente = cliente;
 }
 
}
• Definir, na pasta src/META-INF, o arquivo persistence.xml:
<?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=”clientePU”>
 <provider>org.hibernate.ejb.HibernatePersistence</provider>
 <class>br.com.entity.Clientes</class>
 <class>br.com.entity.Pedidos</class>
 <properties>
 <property name=”hibernate.hbm2ddl.auto” value=”update” />
 <property name=”hibernate.format_sql” value=”true” />
 <property 
 name=”hibernate.dialect” 
 value=”org.hibernate.dialect.MySQLDialect” />
 <property 
 name=”hibernate.connection.driver_class” 
 value=”com.mysql.jdbc.Driver” />
 <property 
 name=”hibernate.connection.url” 
 value=”jdbc:mysql://localhost/forum01” />
 <property name=”hibernate.connection.username” value=”root” />
 <property name=”hibernate.connection.password” value=”password” />
 </properties>
 </persistence-unit>
</persistence>
• Escrever a classe Helper, contendo métodos auxiliares para realizar a persistência:
package br.com.helper;
import javax.persistence.EntityManager;
import br.com.entity.Forum;
import br.com.entity.Usuario;
Aplicações Com Hibernate, EJB e JPA
149
public class Helper {
 private EntityManager em;
 
 public Helper(EntityManager em){
 this.em = em;
 }
 
 public String salvar(Clientes cliente){
 try{
 em.getTransaction().begin();
 em.persist(cliente);
 em.getTransaction().commit();
 return “Cliente salvo”;
 }catch(Exception e){
 return e.getMessage();
 }
 }
 
 
 public String adicionarPedido(int idCliente, Pedidos pedido){
 try {
 Cliente f = em.find(Cliente.class, idCliente);
 pedido.setCliente(f); 
 f.getPedidos().add(pedido);
 
 em.getTransaction().begin();
 em.persist(f);
 em.getTransaction().commit();
 return “Inclusao realizada”;
 } catch(Exception e){