Evento.java. package dominio;



Documentos relacionados
Mapeando Entidades. Abaixo iremos mapear nossas classes. Fornecedor.java package entidades;

Desvendando o Hibernate

Demoiselle Tutorial Documentation

JPA Java Persistence API. Prof. Ramon Chiara

Antes de iniciar execute o script do banco de dados no SQLYOG ou outra ferramenta de sua preferência

Java Persistence API (JPA)

Padrão J2EE Data Access Object (DAO)

public abstract class Pessoa extends Entidade {

Introdução à JPA-Java Persistence API

Criar uma aplicação JPA2 com EclipseLink e H2

UFG - Instituto de Informática

Java Persistence Query Language JPQL

Criando um CRUD RESTful com Jersey, JPA e MySQL

Mapeamento Lógico/Relacional com JPA

AULA 8 CRIANDO UMA CLASSE EM PHP INTERAGINDO COM BANCO DE DADOS - COM RELACIONAMENTO ENTRE TABELAS

Design Patterns (Factory Method, Prototype, Singleton)

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC

Módulo 03. Mapeando Associações/Relacionamentos. Raphaela Galhardo.

Funcionamento da Aplicação. Simulações do funcionamento. Simulação SAC

UNIVERSIDADE FEDERAL DO PARANÁ. CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o.

INSTITUTO DE COMPUTAÇÃO UNICAMP 1o. SEMESTRE DE Profa. Cecília M. F. Rubira

Introdução. Configuração. Padrão POJO. Framework Pesistência de. Mapeamento Annotation. Objetos. Persistência. Java. Objetos. Prof.

Prática de Programação J2ME (15) Especialização em Desenvolvimento Web com Interfaces Ricas

UFG - Instituto de Informática


Coleções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS

Tutorial Módulo 06 - Segurança

Demoiselle Nimble Guia do Usuário Emerson Saito Rodrigo Hjort Serge Rehem

MANIPULAÇÃO DE BANCO DE DADOS UTILIZANDO INTERFACE GRÁFICA

SPRING - VALIDAÇÃO. Altere o arquivo formulario.jsp como segue:

HIBERNATE Criando um projeto em Java + Hibernate do zero

Unidade 9: Middleware JDBC para Criação de Beans

PROJETO ECLIPSE: Estrutura do projeto: (Dynamic Web Project) LIBS: Java WebDeveloper. Prof. Edson Belém

Objetivo: Aplicar a técnica de encapsulamento no sistema de gestão acadêmica

O que fazer ao receber o Caso de Uso NOMEDAENTIDADE CRUD?

Demoiselle Nimble Guia do Usuário Emerson Saito Rodrigo Hjort Serge Rehem

Linguagem de Programação II Importando Classes/Pacotes

JPA Mini Livro Primeiros passos e conceitos detalhados

JPA e Hibernate por Thiago Faria e Normandes Junior

Autor: Ricardo Francisco Minzé Júnior - ricardominze@yahoo.com.br Desenvolvendo aplicações em camadas com PHP 5.

Demoiselle Nimble Guia do Usuário Emerson Saito Rodrigo Hjort Serge Rehem

Universidade Católica do Salvador Bacharelado em Informática. Antonio Yuri Jailson do Amor Divino Felipe Souza. Tutorial: Trabalhando com JDBC

Desenvolvimento Web com Framework Demoiselle versão 1.0

JPA Passo a Passo. Henrique Eduardo M. Oliveira henrique@voffice.com.br. Globalcode Open4Education

Auditando persistência com JPA

Classe Funcionario tem Endereco

Tutorial Hibernate + Vraptor para projetos Restful.

Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça Prática 01

Implementação de Classe e Auto-Relacionamento em Java

JPA e Hibernate. Versão 1.0. Apostila destinada ao curso com carga horária de 32 (trinta e duas) horas

Hibernate com Anotações

Programação de Dispositivos Móveis

Programação Visual TIC - 3PA. Lista de Exercícios 02

Acessando um Banco de Dados

JavaServer Faces JSF

Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO.

public Agenda() { compromissos = null; } public int getnumerodecompromissos() { if (compromissos==null) return 0; else return compromissos.

Objetivos: Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único

Desenvolvimento de Aplicações para Internet Aula 7

2. O cadastro é composto por quatro passos, sendo que, no primeiro, serão cadastrados dados pessoais, como: CPF, RG etc.

Java na WEB Componentes Bean

País(es) : Brasil Banco(s) de Dados : SQL Server, Oracle

Hibernate Envers Easy Entity Auditing

PROJETO INTEGRADOR. Documentação. Aplicação de Controle de Acesso FACULDADE DE TECNOLOGIA SENAC GOIÁS. Programação com Frameworks

Introdução ao Hibernate. Hibernate Mapeamento com Anotação. Projeto Desktop Uma Classe. Objetivo. Programas Utilizados

Android Banco de Dados. Ivan Nicoli

Instruções de preenchimento da inscrição para as pessoas privadas de liberdade Enem e Encceja 2010

JPA: Persistência padronizada em Java

SISTEMA EXPERIMENTALL 15/11/2009. Olá! A partir de agora vamos conhecer a IDE NetBeans efetuando um micro projeto swing.

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF)

Aula 2 - Revisão de JPA (Java Persistence API)

Especificação do Caso de Uso. Manter Cliente. Versão 1.0

Agregação, Composição e Associação

Programação Orientada a Objetos no C#.NET usando Padrões de Projeto MARCELO SANTOS DAIBERT E MARCO ANTÔNIO PEREIRA ARAÚJO

Para criar uma animação precisamos de uma imagem e que ela contenha alguns frames. O número de frames é uma escolha sua.

public void setdata(data d) { data = d;

JAVA COM BANCO DE DADOS PROFESSORA DANIELA PIRES

MANUAL PARA INSCRIÇÃO online. Versão Chamamento Público

Guia de Fatores de Qualidade de OO e Java

Java Coleções. Rodrigo C. de Azevedo

Persistindo dados com TopLink no NetBeans

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos

O JUnit permite a realização de testes de unidades, conhecidos como "caixa branca", facilitando assim a correção de métodos e objetos.

Padrões de Projeto e Persistência com DAO

Hibernate. Mapeamento O/R Marcio Aguiar Ribeiro

Aula 2 - Revisão de JPA (Java Persistence API)

Transcrição:

Evento.java package dominio; import java.util.date; import java.util.set; 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.temporal; import javax.persistence.temporaltype; @Entity public class Evento { @Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; private String nome; private String descricao; @OneToMany(mappedBy = "evento", fetch = FetchType.LAZY) private Set<Palestra> palestras; @Temporal(TemporalType.DATE) private Date dataincio; @Temporal(TemporalType.DATE) private Date datatermino; @Temporal(TemporalType.DATE) private Date dataincioinscricoes; @Temporal(TemporalType.DATE) private Date dataterminoinscricoes; 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 getdescricao() { return descricao; public void setdescricao(string descricao) { this.descricao = descricao; public Set<Palestra> getpalestras() { return palestras; public void setpalestras(set<palestra> palestras) { this.palestras = palestras; public Date getdataincio() { return dataincio; public void setdataincio(date dataincio) { this.dataincio = dataincio; public Date getdatatermino() { return datatermino; public void setdatatermino(date datatermino) { this.datatermino = datatermino; public Date getdataincioinscricoes() { return dataincioinscricoes; public void setdataincioinscricoes(date dataincioinscricoes) { this.dataincioinscricoes = dataincioinscricoes; public Date getdataterminoinscricoes() { return dataterminoinscricoes;

public void setdataterminoinscricoes(date dataterminoinscricoes) { this.dataterminoinscricoes = dataterminoinscricoes; Palestra.java package dominio; import java.util.set; import javax.persistence.entity; import javax.persistence.fetchtype; import javax.persistence.generatedvalue; import javax.persistence.generationtype; import javax.persistence.id; import javax.persistence.manytoone; import javax.persistence.onetomany; @Entity public class Palestra { @Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; private String nome; private String descricao; private String areaconhecimento; private int numerovagas; @OneToMany(mappedBy = "palestra", fetch = FetchType.LAZY) private Set<Inscricao> inscricoes; @ManyToOne(fetch = FetchType.EAGER) private Evento evento; 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 getdescricao() { return descricao; public void setdescricao(string descricao) { this.descricao = descricao; public String getareaconhecimento() { return areaconhecimento; public void setareaconhecimento(string areaconhecimento) { this.areaconhecimento = areaconhecimento; public int getnumerovagas() { return numerovagas; public void setnumerovagas(int numerovagas) { this.numerovagas = numerovagas; public Set<Inscricao> getinscricoes() { return inscricoes; public void setinscricoes(set<inscricao> inscricoes) { this.inscricoes = inscricoes; public Evento getevento() { return evento; public void setevento(evento evento) { this.evento = evento; Participante package dominio;

import java.util.date; import java.util.set; import javax.persistence.entity; import javax.persistence.fetchtype; import javax.persistence.id; import javax.persistence.onetomany; import javax.persistence.temporal; import javax.persistence.temporaltype; @Entity public class Participante { @Id private String cpf; private String nome; private String email; private String curso; private String instituicao; private String telefone; private String endereco; private String numero; private String bairro; private String municipio; private String uf; private String cep; @Temporal(TemporalType.TIMESTAMP) private Date datacadastro; @OneToMany(fetch = FetchType.LAZY, mappedby = "participante") private Set<Inscricao> inscricoes; public String getcpf() { return cpf; public void setcpf(string cpf) { this.cpf = cpf; 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; public String getcurso() { return curso; public void setcurso(string curso) { this.curso = curso; public String getinstituicao() { return instituicao; public void setinstituicao(string instituicao) { this.instituicao = instituicao; public String gettelefone() { return telefone; public void settelefone(string telefone) { this.telefone = telefone; public String getendereco() { return endereco; public void setendereco(string endereco) { this.endereco = endereco; public String getnumero() { return numero; public void setnumero(string numero) { this.numero = numero; public String getbairro() {

return bairro; public void setbairro(string bairro) { this.bairro = bairro; public String getmunicipio() { return municipio; public void setmunicipio(string municipio) { this.municipio = municipio; public String getuf() { return uf; public void setuf(string uf) { this.uf = uf; public String getcep() { return cep; public void setcep(string cep) { this.cep = cep; public Date getdatacadastro() { return datacadastro; public void setdatacadastro(date datacadastro) { this.datacadastro = datacadastro; public Set<Inscricao> getinscricoes() { return inscricoes; public void setinscricoes(set<inscricao> inscricoes) { this.inscricoes = inscricoes;

Inscricao.java package dominio; import java.util.date; import javax.persistence.entity; import javax.persistence.fetchtype; import javax.persistence.generatedvalue; import javax.persistence.generationtype; import javax.persistence.id; import javax.persistence.manytoone; import javax.persistence.temporal; import javax.persistence.temporaltype; @Entity public class Inscricao { @Id @GeneratedValue(strategy = GenerationType.AUTO) private int numeroinscricao; @ManyToOne(fetch = FetchType.EAGER) private Participante participante; @ManyToOne(fetch = FetchType.EAGER) private Palestra palestra; @Temporal(TemporalType.TIMESTAMP) private Date datainscricao; public int getnumeroinscricao() { return numeroinscricao; public void setnumeroinscricao(int numeroinscricao) { this.numeroinscricao = numeroinscricao; public Participante getparticipante() { return participante; public void setparticipante(participante participante) { this.participante = participante;

public Date getdatainscricao() { return datainscricao; public void setdatainscricao(date datainscricao) { this.datainscricao = datainscricao; public Palestra getpalestra() { return palestra; public void setpalestra(palestra palestra) { this.palestra = palestra; Além das entidades acima exibidas, precisamos definir o arquivo de configuração persistence.xml. <?xml version="1.0" encoding="utf-8"?> <persistence version="2.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_2_0.xsd"> <persistence-unit name="estacio"> <class>dominio.evento</class> <class>dominio.palestra</class> <class>dominio.inscricao</class> <class>dominio.participante</class> <properties> <property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/estacio" /> <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.embeddeddriver" /> <property name="javax.persistence.jdbc.password" value="estacio" /> <property name="javax.persistence.jdbc.user" value="estacio" /> <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/> </properties> </persistence-unit> </persistence> Na próxima classe utilizaremos o padrão de projeto Singleton como forma de obter um meio único e centralizado de obtermos um objeto do Tipo EntityManager. Chamaremos essa classe de JPAUtil e terá um único método getentitymanager responsável por retornar a instância do EntityManager necessário para realizarmos nossas operações sobre o banco de dados.

JPAUtil.java package dao; import javax.persistence.entitymanager; import javax.persistence.entitymanagerfactory; import javax.persistence.persistence; public class JPAUtil { private static EntityManagerFactory emf = null; private static EntityManager em = null; public static EntityManagerFactory getentitymanagerfactory() { if (emf == null) emf = Persistence.createEntityManagerFactory("estacio"); return emf; public static EntityManager getentitymanager() { if (em!= null && em.isopen()) return em; else { em = getentitymanagerfactory().createentitymanager(); return em; Além do Singleton apresentado acima também criaremos uma DAO para cada uma de nossas entidades. Contudo nas classes apresentadas abaixo, incluiremos somente os métodos necessários para a exceção do nosso módulo exemplo, que será a inscrição de participantes nos eventos disponíveis. Os métodos estarão comentados para que tenhamos um melhor entendimento de suas funcionalidades. DAOEvento.java package dao; import java.util.date; import java.util.list; import java.util.set; import javax.persistence.entitymanager; import javax.persistence.query; import dominio.evento; import dominio.palestra; public class DAOEvento {

private static EntityManager entitymanager; static{ entitymanager = JPAUtil.getEntityManager(); //Recupera todos os eventos em que data atual seja menos que a dataterminoinscricoes public static List<Evento> geteventosvalidos() { Query query = entitymanager.createquery("select e from Evento e where e.dataterminoinscricoes > :dataatual"); query.setparameter("dataatual", new Date()); return query.getresultlist(); //Localiza um evento com base em seu id public static Evento localizar(int id){ return entitymanager.find(evento.class, id); public static Set<Palestra> listapalestrasevento(int idevento){ return entitymanager.find(evento.class, idevento).getpalestras(); DAOInscricao.java package dao; import javax.persistence.entitymanager; import javax.persistence.query; import dominio.inscricao; public class DAOInscricao { private static EntityManager entitymanager; static{ entitymanager = JPAUtil.getEntityManager(); public static boolean verificasejainscrito(inscricao inscricao) {

// Criamos uma consulta EJBQL que nos retorna um objeto do tipo Inscricao Query query = entitymanager.createquery("select i from Inscricao i where i.participante.cpf = :cpfparticipante and i.palestra.id = :idpalestra"); // Setamos os parâmetros CPF e palestra para verificar se o participante // já está inscrito para a palestra selecionada query.setparameter("cpfparticipante", inscricao.getparticipante().getcpf()); query.setparameter("idpalestra", inscricao.getpalestra().getid()); // Caso não seja encontrado um resultado será lançada uma // javax.persistence.noresultexception return (query.getresultlist().isempty())? false : true; public static void salvaincricao(inscricao inscricao) { // Iniciamos uma transação entitymanager.gettransaction().begin(); // Verificamos se o participante já está cadastrado no banco de dados // Caso não exista, será persistido DAOParticipante daop = new DAOParticipante(); if (daop.localizaparticipante(inscricao.getparticipante().getcpf()) == null) { entitymanager.persist(inscricao.getparticipante()); // Caso contrário, seus dados serão atualizados else { entitymanager.merge(inscricao.getparticipante()); // Persistimos a inscrição entitymanager.persist(inscricao); // "Commitamos" a transação entitymanager.gettransaction().commit(); DAOParticipante.java package dao; import javax.persistence.entitymanager;

import dominio.participante; public class DAOParticipante { private EntityManager entitymanager; public DAOParticipante(){ entitymanager = JPAUtil.getEntityManager(); public Participante localizaparticipante(string cpf) { // Localiza participante return entitymanager.find(participante.class, cpf); DAOPalestra.java package dao; import javax.persistence.entitymanager; import dominio.palestra; public class DAOPalestra { private static EntityManager entitymanager; static{ entitymanager = JPAUtil.getEntityManager(); public static Palestra localizarpalestra(int idpalestra) { return entitymanager.find(palestra.class, idpalestra);