SlideShare uma empresa Scribd logo
1 de 32
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

Mais conteúdo relacionado

Mais de Miguel Vilaca

TOGAF Certification
TOGAF Certification TOGAF Certification
TOGAF Certification Miguel Vilaca
 
Best2bee Business Model
Best2bee Business ModelBest2bee Business Model
Best2bee Business ModelMiguel Vilaca
 
Simulado java se 7 programmer
Simulado java se 7 programmerSimulado java se 7 programmer
Simulado java se 7 programmerMiguel Vilaca
 
CronApp Roadshow Chatbot & ROI - Maio 2018
CronApp Roadshow Chatbot & ROI - Maio 2018CronApp Roadshow Chatbot & ROI - Maio 2018
CronApp Roadshow Chatbot & ROI - Maio 2018Miguel Vilaca
 

Mais de Miguel Vilaca (8)

TOGAF Certification
TOGAF Certification TOGAF Certification
TOGAF Certification
 
Scrum trainning
Scrum trainningScrum trainning
Scrum trainning
 
Best2bee Business Model
Best2bee Business ModelBest2bee Business Model
Best2bee Business Model
 
Padrões de projeto
Padrões de projetoPadrões de projeto
Padrões de projeto
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Curso tomcat
Curso tomcatCurso tomcat
Curso tomcat
 
Simulado java se 7 programmer
Simulado java se 7 programmerSimulado java se 7 programmer
Simulado java se 7 programmer
 
CronApp Roadshow Chatbot & ROI - Maio 2018
CronApp Roadshow Chatbot & ROI - Maio 2018CronApp Roadshow Chatbot & ROI - Maio 2018
CronApp Roadshow Chatbot & ROI - Maio 2018
 

Curso jpa java persistence API

  • 1.
  • 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
  • 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