176 pág.

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