A maior rede de estudos do Brasil

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

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

= session.beginTransaction();
 session.save(cliente);
 transaction.commit();
 return “Cliente salvo”;
 }catch(Exception e){
 return e.getMessage();
 }
 }
 
 public String salvar(Conta conta){
 try{
 session = HibernateUtil.getSessionFactory().getCurrentSession();
 transaction = session.beginTransaction();
 session.save(conta);
 transaction.commit();
 return “Conta salva”;
 }catch(Exception e){
 return e.getMessage();
 }
 }
 
 public String adicionarUsuario(int idCliente, int agencia){
 try {
 session = HibernateUtil.getSessionFactory().getCurrentSession();
 transaction = session.beginTransaction();
 Cliente f = (Cliente)session.load(Conta.class, idCliente);
 Conta u = (Conta)session.load(Conta.class, agencia);
 
 f.getContas().add(u);
Aplicações Com Hibernate, EJB e JPA
137
 session.save(f);
 transaction.commit();
 return “Associação realizada”;
 } catch(Exception e){
 return e.getMessage();
 }
 }
 
 public Set<Conta> listarContas(int idCliente){
 Set<Conta> contas = new HashSet<Conta>(); 
 try {
 session = HibernateUtil.getSessionFactory().getCurrentSession();
 transaction = session.beginTransaction();
 Cliente f = (Cliente)session.load(Cliente.class, idCliente);
 contas = f.getContas();
 
 } catch (Exception e) {
 
 }
 return contas;
 }
}
6. Escrever um programa consistente para testar todos os itens que você definiu.
package br.com.programa;
import java.util.Set;
import br.com.entity.Cliente;
import br.com.entity.Conta;
import br.com.helper.ClienteHelper;
public class Teste Cliente {
 public static void main(String[] args) {
 incluirCliente ();
 incluirContanoClientem();
 listarContassPorCliente ();
 }
 
 private static void incluirCliente (){
 Cliente cliente = new Cliente ();
 cliente.setCpf(“12345678900”);
 forum.setNome(“Jose”);
 forum.setDadanascimento(new Date());
Aplicações Com Hibernate, EJB e JPA
138
 
 ClienteHelper helper = new ClienteHelper();
 System.out.println(helper.salvar(cliente));
 }
 
 private static void incluirContanoCliente(){
 ClienteHelper helper = new ClienteHelper();
 Conta u1 = new Conta();
 u1.setAgencia(1234);
 u1.setContacorrente(“12345-6”);
 u1.setCpf(“12345678900”);
 
 Conta u2 = new Conta();
 u2.setAgencia(1235);
 u2.setContacorrente(“12355-6”);
 u2.setCpf(“12345678900”);
 
 System.out.println(helper.adicionarCliente(10, u1));
 System.out.println(helper.adicionarCliente(10, u2));
 }
 
}
Exercícios do Módulo 2
Caro aluno, o primeiro exercício deste módulo apresenta uma solução completa e deve ser seguida na 
elaboração dos exercícios posteriores. Sugiro que este seja implementado completamente, antes de você 
passar ao próximo.
Exercicio 1
Neste roteiro desenvolveremos uma aplicação baseada em anotações JPA. Os passos são apresentados a 
seguir:
• Criar um projeto Java Project chamado ExemploJPA.
• Importar a API do Hibernate.
• Importar o banco de dados forum do Exercício 1 do Módulo 1:
Aplicações Com Hibernate, EJB e JPA
139
• Copiar este banco de dados para outro chamado forum01, e tornar as chaves IDFORUM e IDU-
SUARIO como auto-incremento.
• Com base neste modelo, criar as entidades Forum e Usuario (as mesmas do módulo anterior):
package br.com.ead.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.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name=”FORUM”, schema = “forum01”)
public class Forum implements Serializable {
 private static final long serialVersionUID = 1L;
 @Id
 @GeneratedValue(strategy = GenerationType.AUTO)
 @Column(name = “IDFORUM”)
 private int id;
 
 @Column(name = “ASSUNTO”, length = 45)
 private String assunto;
 
 @Column(name = “DESCRICAO”, length = 45)
 private String descricao; 
 
 @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = “forum”)
Aplicações Com Hibernate, EJB e JPA
140
 private Set<Usuario> usuarios = new HashSet<Usuario>();
 
 public int getId() {
 return id;
 }
 public void setId(int id) {
 this.id = id;
 }
 public String getAssunto() {
 return assunto;
 }
 public void setAssunto(String assunto) {
 this.assunto = assunto;
 }
 public String getDescricao() {
 return descricao;
 }
 public void setDescricao(String descricao) {
 this.descricao = descricao;
 }
 public Set<Usuario> getUsuarios() {
 return usuarios;
 }
 public void setUsuarios(Set<Usuario> usuarios) {
 this.usuarios = usuarios;
 } 
}
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;
@Entity
@Table(name = “USUARIO”, schema = “forum01”)
public class Usuario implements Serializable {
 private static final long serialVersionUID = 1L;
 @Id
 @GeneratedValue(strategy = GenerationType.AUTO)
Aplicações Com Hibernate, EJB e JPA
141
 @Column(name = “IDUSUARIO”)
 private int id;
 @ManyToOne(fetch = FetchType.LAZY)
 @JoinColumn(name = “IDFORUM”)
 private Forum forum;
 
 @Column(name = “NOME”)
 private String nome;
 
 @Column(name = “EMAIL”)
 private String email; 
 public int getId() {
 return id;
 }
 public void setId(int id) {
 this.id = id;
 }
 public Forum getForum() {
 return forum;
 }
 public void setForum(Forum forum) {
 this.forum = forum;
 }
 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;
 } 
}
• 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”
Aplicações Com Hibernate, EJB e JPA
142
 xsi:schemaLocation=”http://java.sun.com/xml/ns/persistence
 http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd”>
 <persistence-unit name=”Forum”>
 <provider>org.hibernate.ejb.HibernatePersistence</provider>
 <class>br.com.ead.entity.Forum</class>
 <class>br.com.ead.entity.Usuario</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 ForumHelper, contendo métodos auxiliares para realizar