O documento introduz os principais conceitos do Java Persistence API (JPA), incluindo mapeamento objeto-relacional, entity manager, consultas, relacionamentos e exercícios de mapeamento de entidades com diferentes associações.
JPAJava Persistence APIJPAMapeamentoObjeto/Relacional (ORM)Query Language (EJBQL)Novo padão ORMBaseado no HibernateAgiliza muito o desenvolvimento
3.
JPAPacote: javax.persistenceMapeamento porXML ou AnnotationFramework (Hibernate, TopLink, OpenJPA)Pode ser utilizado fora de container EJBsUso de injeção de dependência ao invés de lookups JNDI
JPAEntity: POJOs, suportaherança e polimorfismoEntityManager: responsável pelas operações de persistência de objetosPersistenceContext: área de memória que mantém os objetos que estão sendo manipulados pelo EntityManagerProvedores: especificação para frameworks de persistência
6.
JPAEntidadesNo JPA asentidade são descritas como POJO (Plain Old Java Object), sendo criadas através de classes JavaTem uma identidade persistentePodem ter estado persistente e não persistente
JPACada entidade devepossuir um identificador de persistência -> Chava primária no banco de dadosO Identificador pode corresponder a um tipo simples:@Id : Anota o atributo que será a chave primária.@GeneratedValue: Gera o valor automaticamente, usando diferentes estratégias.
9.
JPAAnotando CamposNo JPApodemos anotar cada atributo da nossa entidade, de maneira que possamos definir características específicas para cara umPara isso usamos: @Column
10.
JPAOutras anotações:@Temporal - Define que um campo armanezará valor do tipo data@Enumerated - Define que o campo está relacionado a um Enum@Transiente – Define que esta propriedade não será armazenada no banco.@Lob – Define que o campo armazenará dados do tipo Long Object Binary
11.
JPAOutras anotações:@Entity –Entidade a ser persistida@Table – Especifica propriedade da tabela@Column – Especifica a propriedade da coluna@Id – Especifica a chave primária@Named Query – Cria consultas estáticas@GeneratedValue – Gera id’s automaticamente
JPAEntity ManagerSimilar àfuncionalidade do Hibernate Session, controla o ciclo de vida das entidadesNew() Cria uma nova entidadePersist()Persiste uma entidade
14.
JPAEntity ManagerRefresh()Atualiza oestado da entidadeRemove()Marca uma entidade para remoçãoMerge()Sincroniza o estado de entidades desacopladas
JPARelacionamentosModela a associaçãoentre as entidadesSuporta relacionamento unidirecional e bidirecionalCardinalidadesUm para um (@OneToOne)Um para muitos (@OneToMany)Muitos para um (@ManyToOne)Muitos para muitos (@ManyToMany)
JPAConsultas NamedQuery /Query (SELECT p FROM Pessoa p LEFT JOIN p.endereco e WHERE e.rua like :rua“) – pré-compiladoNativeQuery(SELECT p FROM Pessoa p LEFT JOIN Endereco e ON e.codigoPessoa = p.codigo WHERE e.rua like :rua"
JPAExercíciosMapear as seguintestabelas:Pessoa (Id, nome, dataNasciomento)Telefone (id, numero, tipoTelefone)TipoTelefone (Enum: Residencial, Celular, Comercial)Endereço (id, rua, bairro, numero)Time (id, nome)Uma Pessoa tem N Telefones (OneToMany)N Pessoas torcem para N Times (ManyToMany)N Telefones para 1 Pessoa (ManyToOne)Uma pessoa tem 1 Endereço (OneToOne)Um Telefone é de um Tipo de Telefone. (Uso de Enum)
28.
JPAExercícios (OneToOne) Pessoa – EndereçoCriar um método para inserir uma pessoaCriar um método para pesquisar essa pessoaCriar um método para alterar essa pessoaCriar um método para inserir uma pessoa com um endereçoAtenção no Cascade.Criar um método para apagar o endereço de uma pessoaAtenção na referência nulaCriar um método para alterar o endereço de uma pessoa.
29.
JPAExercícios (OneToMany) Pessoa – TelefoneCriar um método para inserir uma pessoa com um Telefone Atenção no Cascade.Criar um método para apagar o telefone de uma pessoaCriar um método para alterar o telefone de uma pessoa. Atenção na referência nulaCriar um método para listar todos os telefones de uma pessoa.
30.
JPAExercícios (ManyToMany) Pessoa – TimeCriar um método para inserir uma pessoa e 2 timesAtenção no Cascade.Criar um método para apagar um time de uma pessoaCriar um método para listar todos os Times de uma pessoa.
31.
JPAExercíciosCriar uma namedQuerypara buscar as pessoas por nomeCriar uma namedQuery para buscar as pessoas que moram em uma determinada ruaCriar uma namedQuery para buscar as pessoas que torcem para um determinado timeCriar uma namedQuery para buscar as pessoas que tem telefone celular