SlideShare una empresa de Scribd logo
1 de 32
JPA Introdução
JPA Java Persistence API JPA Mapeamento Objeto/Relacional (ORM) Query Language (EJBQL) Novo padão ORM Baseado no Hibernate Agiliza muito o desenvolvimento
JPA Pacote: javax.persistence Mapeamento por XML ou Annotation Framework (Hibernate, TopLink, OpenJPA) Pode ser utilizado fora de container EJBs Uso de injeção de dependência ao invés de lookups JNDI
JPA
JPA Entity: POJOs, suporta herança e polimorfismo EntityManager: responsável pelas operações de persistência de objetos PersistenceContext: área de memória que mantém os objetos que estão sendo manipulados pelo EntityManager Provedores: especificação para frameworks de persistência
JPA Entidades No JPA as entidade são descritas como POJO (Plain Old Java Object), sendo criadas através de classes Java Tem uma identidade persistente Podem ter estado persistente e não persistente
JPA
JPA Cada entidade deve possuir um  identificador de persistência -> Chava primária no banco de dados O 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.
JPA Anotando Campos No JPA podemos anotar cada atributo da nossa entidade, de maneira que possamos definir características específicas para cara um Para isso usamos: 	@Column
JPA Outras 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
JPA Outras 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
JPA Outras anotações: @OneToOne – Relacionamento “um-para-um” @OneToMany – Relacionamento “um-para-muitos” @ManyToOne – Relacionamento “muitos-para-um” @ManyToMany – Relacionamento “muitos-para-muito”
JPA Entity Manager Similar à funcionalidade do Hibernate Session, controla o ciclo de vida das entidades New()  Cria uma nova entidade Persist() Persiste uma entidade
JPA Entity Manager Refresh() Atualiza o estado da entidade Remove() Marca uma entidade para remoção Merge() Sincroniza o estado de entidades desacopladas
JPA Operação de Persistência
JPA Operação de Pesquisa e Remoção
JPA Ciclo de vida
JPA Relacionamentos Modela a associação entre as entidades Suporta relacionamento unidirecional e bidirecional Cardinalidades Um para um (@OneToOne) Um para muitos (@OneToMany) Muitos para um (@ManyToOne) Muitos para muitos (@ManyToMany)
JPA Comportamento em Cascata Usado para propagar o efeito de uma operação à entidades associadas
JPA Relacionamento OneToOne A entidade possui uma propriedade composta cujo tipo é outra entidade
JPA Relacionamento ManyToOne e OneToMany A entidade faz parte de uma coleção de entidade de outra entidade
JPA Relacionamento ManyToMany Duas entidade possuem coleções umas das outras, ambas terão propriedades de coleção com a anotação @ManyToMany
JPA Persistence.xml META-INF/persistence.xml
JPA Consultas  NamedQuery / Query (SELECT p FROM Pessoa p LEFT JOIN p.endereco e WHERE e.rua like :rua“) – pré-compilado NativeQuery(SELECT p FROM Pessoa p LEFT JOIN Endereco e ON e.codigoPessoa = p.codigo WHERE e.rua like :rua"
JPA Consultas
JPA Exercícios Criar uma aplicação em Seam para utilzar o JPA
JPA Exercícios Mapear as seguintes tabelas: 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)
JPA Exercícios (OneToOne)  Pessoa – Endereço Criar um método para inserir uma pessoa Criar um método para pesquisar essa pessoa Criar um método para alterar essa pessoa Criar um método para inserir uma pessoa com um endereço Atenção no Cascade. Criar um método para apagar o endereço de uma pessoa Atenção na referência nula Criar um método para alterar o endereço de uma pessoa.
JPA Exercícios (OneToMany)  Pessoa – Telefone Criar um método para inserir uma pessoa com um Telefone Atenção no Cascade. Criar um método para apagar o telefone de uma pessoa Criar um método para alterar o telefone de uma pessoa. Atenção na referência nula Criar um método para listar todos os telefones de uma pessoa.
JPA Exercícios (ManyToMany)  Pessoa – Time Criar um método para inserir uma pessoa e 2 times Atenção no Cascade. Criar um método para apagar um time de uma pessoa Criar um método para listar todos os Times de uma pessoa.
JPA Exercícios Criar uma namedQuery para buscar as pessoas por nome Criar uma namedQuery para buscar as pessoas que moram em uma determinada rua Criar uma namedQuery para buscar as pessoas que torcem para um determinado time Criar uma namedQuery para buscar as pessoas que tem telefone celular
FIM

Más contenido relacionado

Destacado

JPA - Mini-Livro - Iniciação e Conceitos
JPA - Mini-Livro - Iniciação e ConceitosJPA - Mini-Livro - Iniciação e Conceitos
JPA - Mini-Livro - Iniciação e ConceitosPaulo Carvalho
 
Programação Orientada a Objetos - Pós Graduação - Aula 2
Programação Orientada a Objetos - Pós Graduação - Aula 2Programação Orientada a Objetos - Pós Graduação - Aula 2
Programação Orientada a Objetos - Pós Graduação - Aula 2Carlos Eduardo
 
Programação Orientada a Objetos - Pós Graduação - Aula 3
Programação Orientada a Objetos - Pós Graduação - Aula 3Programação Orientada a Objetos - Pós Graduação - Aula 3
Programação Orientada a Objetos - Pós Graduação - Aula 3Carlos Eduardo
 
Aplicações Web com JSF e JPA
Aplicações Web com JSF e JPAAplicações Web com JSF e JPA
Aplicações Web com JSF e JPATotem Treinamentos
 
Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012Frederico Maia Arantes
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com HibernateDanilo Braga
 
Curso Java Web (JAVA, JSF, JPA)
Curso Java Web (JAVA, JSF, JPA)Curso Java Web (JAVA, JSF, JPA)
Curso Java Web (JAVA, JSF, JPA)Marcos Batista
 
Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7Claudio Martins
 
Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPACaelum
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesRosicleia Frasson
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsLinkedIn
 

Destacado (16)

JPA - Mini-Livro - Iniciação e Conceitos
JPA - Mini-Livro - Iniciação e ConceitosJPA - Mini-Livro - Iniciação e Conceitos
JPA - Mini-Livro - Iniciação e Conceitos
 
JPA com Hibernate
JPA com HibernateJPA com Hibernate
JPA com Hibernate
 
Um homem comum
Um homem comumUm homem comum
Um homem comum
 
Minicurso jpa e hibernate
Minicurso jpa e hibernateMinicurso jpa e hibernate
Minicurso jpa e hibernate
 
Programação Orientada a Objetos - Pós Graduação - Aula 2
Programação Orientada a Objetos - Pós Graduação - Aula 2Programação Orientada a Objetos - Pós Graduação - Aula 2
Programação Orientada a Objetos - Pós Graduação - Aula 2
 
Programação Orientada a Objetos - Pós Graduação - Aula 3
Programação Orientada a Objetos - Pós Graduação - Aula 3Programação Orientada a Objetos - Pós Graduação - Aula 3
Programação Orientada a Objetos - Pós Graduação - Aula 3
 
Aula JPA
Aula JPAAula JPA
Aula JPA
 
Aplicações Web com JSF e JPA
Aplicações Web com JSF e JPAAplicações Web com JSF e JPA
Aplicações Web com JSF e JPA
 
Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012
 
JPA - MGJUG
JPA - MGJUGJPA - MGJUG
JPA - MGJUG
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com Hibernate
 
Curso Java Web (JAVA, JSF, JPA)
Curso Java Web (JAVA, JSF, JPA)Curso Java Web (JAVA, JSF, JPA)
Curso Java Web (JAVA, JSF, JPA)
 
Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7
 
Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPA
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e Primefaces
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving Cars
 

Más de jornaljava

Por dentro da nuvem
Por dentro da nuvemPor dentro da nuvem
Por dentro da nuvemjornaljava
 
Jornal java por dentro da nuvem
Jornal java por dentro da nuvemJornal java por dentro da nuvem
Jornal java por dentro da nuvemjornaljava
 
Banco de Dados NoSql - JornalJava
Banco de Dados NoSql - JornalJavaBanco de Dados NoSql - JornalJava
Banco de Dados NoSql - JornalJavajornaljava
 
Criando um simples portlet com jboss portal
Criando um simples portlet com jboss portalCriando um simples portlet com jboss portal
Criando um simples portlet com jboss portaljornaljava
 

Más de jornaljava (8)

Por dentro da nuvem
Por dentro da nuvemPor dentro da nuvem
Por dentro da nuvem
 
Jornal java por dentro da nuvem
Jornal java por dentro da nuvemJornal java por dentro da nuvem
Jornal java por dentro da nuvem
 
Banco de Dados NoSql - JornalJava
Banco de Dados NoSql - JornalJavaBanco de Dados NoSql - JornalJava
Banco de Dados NoSql - JornalJava
 
Criando um simples portlet com jboss portal
Criando um simples portlet com jboss portalCriando um simples portlet com jboss portal
Criando um simples portlet com jboss portal
 
J boss seam
J boss seamJ boss seam
J boss seam
 
Facelets
FaceletsFacelets
Facelets
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Rich faces
Rich facesRich faces
Rich faces
 

JPA ORM introdução e exercícios

  • 2. JPA Java Persistence API JPA Mapeamento Objeto/Relacional (ORM) Query Language (EJBQL) Novo padão ORM Baseado no Hibernate Agiliza muito o desenvolvimento
  • 3. JPA Pacote: javax.persistence Mapeamento por XML ou Annotation Framework (Hibernate, TopLink, OpenJPA) Pode ser utilizado fora de container EJBs Uso de injeção de dependência ao invés de lookups JNDI
  • 4. JPA
  • 5. JPA Entity: POJOs, suporta herança e polimorfismo EntityManager: responsável pelas operações de persistência de objetos PersistenceContext: área de memória que mantém os objetos que estão sendo manipulados pelo EntityManager Provedores: especificação para frameworks de persistência
  • 6. JPA Entidades No JPA as entidade são descritas como POJO (Plain Old Java Object), sendo criadas através de classes Java Tem uma identidade persistente Podem ter estado persistente e não persistente
  • 7. JPA
  • 8. JPA Cada entidade deve possuir um identificador de persistência -> Chava primária no banco de dados O 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. JPA Anotando Campos No JPA podemos anotar cada atributo da nossa entidade, de maneira que possamos definir características específicas para cara um Para isso usamos: @Column
  • 10. JPA Outras 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. JPA Outras 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
  • 12. JPA Outras anotações: @OneToOne – Relacionamento “um-para-um” @OneToMany – Relacionamento “um-para-muitos” @ManyToOne – Relacionamento “muitos-para-um” @ManyToMany – Relacionamento “muitos-para-muito”
  • 13. JPA Entity Manager Similar à funcionalidade do Hibernate Session, controla o ciclo de vida das entidades New() Cria uma nova entidade Persist() Persiste uma entidade
  • 14. JPA Entity Manager Refresh() Atualiza o estado da entidade Remove() Marca uma entidade para remoção Merge() Sincroniza o estado de entidades desacopladas
  • 15. JPA Operação de Persistência
  • 16. JPA Operação de Pesquisa e Remoção
  • 17. JPA Ciclo de vida
  • 18. JPA Relacionamentos Modela a associação entre as entidades Suporta relacionamento unidirecional e bidirecional Cardinalidades Um para um (@OneToOne) Um para muitos (@OneToMany) Muitos para um (@ManyToOne) Muitos para muitos (@ManyToMany)
  • 19. JPA Comportamento em Cascata Usado para propagar o efeito de uma operação à entidades associadas
  • 20. JPA Relacionamento OneToOne A entidade possui uma propriedade composta cujo tipo é outra entidade
  • 21. JPA Relacionamento ManyToOne e OneToMany A entidade faz parte de uma coleção de entidade de outra entidade
  • 22. JPA Relacionamento ManyToMany Duas entidade possuem coleções umas das outras, ambas terão propriedades de coleção com a anotação @ManyToMany
  • 24. JPA Consultas NamedQuery / Query (SELECT p FROM Pessoa p LEFT JOIN p.endereco e WHERE e.rua like :rua“) – pré-compilado NativeQuery(SELECT p FROM Pessoa p LEFT JOIN Endereco e ON e.codigoPessoa = p.codigo WHERE e.rua like :rua"
  • 26. JPA Exercícios Criar uma aplicação em Seam para utilzar o JPA
  • 27. JPA Exercícios Mapear as seguintes tabelas: 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. JPA Exercícios (OneToOne) Pessoa – Endereço Criar um método para inserir uma pessoa Criar um método para pesquisar essa pessoa Criar um método para alterar essa pessoa Criar um método para inserir uma pessoa com um endereço Atenção no Cascade. Criar um método para apagar o endereço de uma pessoa Atenção na referência nula Criar um método para alterar o endereço de uma pessoa.
  • 29. JPA Exercícios (OneToMany) Pessoa – Telefone Criar um método para inserir uma pessoa com um Telefone Atenção no Cascade. Criar um método para apagar o telefone de uma pessoa Criar um método para alterar o telefone de uma pessoa. Atenção na referência nula Criar um método para listar todos os telefones de uma pessoa.
  • 30. JPA Exercícios (ManyToMany) Pessoa – Time Criar um método para inserir uma pessoa e 2 times Atenção no Cascade. Criar um método para apagar um time de uma pessoa Criar um método para listar todos os Times de uma pessoa.
  • 31. JPA Exercícios Criar uma namedQuery para buscar as pessoas por nome Criar uma namedQuery para buscar as pessoas que moram em uma determinada rua Criar uma namedQuery para buscar as pessoas que torcem para um determinado time Criar uma namedQuery para buscar as pessoas que tem telefone celular
  • 32. FIM