1 / 14

JPA - API Prof. Leandro Rubim profleandror@fiap.br leandro.fiap@gmail

JPA - API Prof. Leandro Rubim profleandror@fiap.com.br leandro.fiap@gmail.com. Agenda. JPA EntityManager Definições Contexto Persistência Obtendo um EntityManager Transações API EntityManager. JPA. Conjunto de anotações para mapeamento O/R; API para persistência de entidades;

brita
Download Presentation

JPA - API Prof. Leandro Rubim profleandror@fiap.br leandro.fiap@gmail

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. JPA - API Prof. Leandro Rubim profleandror@fiap.com.br leandro.fiap@gmail.com

  2. Agenda • JPA • EntityManager • Definições • Contexto Persistência • Obtendo um EntityManager • Transações • API EntityManager

  3. JPA • Conjunto de anotações para mapeamento O/R; • API para persistência de entidades; • Linguagem de consultas EJB-QL; • Especificação independente de fabricante; • Utilizaremos a implementação Hibernate: • Hibernate Core; • Hibernate Annotations; • Hibernate Entity Manager;

  4. Entity Manager • Unidade central para gerenciamento de entidades na JPA através de uma API padronizada; • Responsável pela criação, atualização, remoção e consulta às entidades (CRUD); • Controle de transações; • Gerenciamento de cache;

  5. Definições • Unidade de Persistência: • conjunto fixo de classes mapeadas para o banco de dados (persistence.xml); • Contexto de Persistência: • conjunto de instâncias de entidades gerenciadas de um Entity Manager; • Entidades Gerenciadas: • quando entidades estão associadas a um contexto de persistência; • alterações no estado das entidades são sincronizadas com o banco de dados; • ao fechar um contexto de persistência, todas suas instâncias de entidades associadas tornam-se não gerenciadas; • Entidades Não Gerenciadas: • entidades não associadas a um contexto de persistência (por exemplo quando são instanciadas); • alterações nas entidades não se refletem no banco de dados;

  6. Contexto Persistência • Ponte entre entidades na memória e banco de dados; • Gerenciada por um Entity Manager; Contexto BD Entidade Entity Manager

  7. Estados Entidade • new instância da entidade criada em memória mas não associada a um contexto de persistência e não possui id equivalente no banco de dados; • managed tem um id no banco de dados e está associada a um contexto de persistência; • detached tem um id no bando de dados mas não está associada ao contexto de persistência; • removed instância da entidade associada a um contexto de persistência mas está programada para ser removida do banco de dados;

  8. Diagrama de Estado Entidade new() new persist() refresh() remove() removed managed persist() • Contexto fechado • Commit • Serialização merge() detached

  9. Obtendo um EntityManager • Utilizar a anotação @PersistenceContext para obter, via injeção de dependência, uma instância que implemente a interface EntityManager; • Exemplo: public class ClienteBean ... { @PersistenceContext EntityManager manager = null; }

  10. API EntityManager • persist (Object entity): • enfileira entidade para ser inserida uma entidade no banco de dados e a torna gerenciada; • Exemplo: VeiculoEntity veiculo = new VeiculoEntity(); veiculo.setPlaca(“DHZ-5678”); veiculo.setModelo(“Fusca”); manager.persist(veiculo);

  11. API EntityManager • merge (Object entidade): • atualiza uma entidade não gerenciada no contexto de persistência; • Caso já exista uma entiade gerenciada com o mesmo id  realiza uma operação de UPDATE; • Caso contrário  realiza uma operação de INSERT; • A entidade torna-se gerenciada; • Exemplo: VeiculoEntity veiculo = new VeiculoEntity(); veiculo.setPlaca(“DHZ-5678”); veiculo.setModelo(“Fusca”); manager.merge(veiculo);

  12. API EntityManager • refresh (Object entidade): • Atualiza dados da entidade com base no banco de dados; • Valores não persistidos são descartados; • A entidade torna-se gerenciada; • Exemplo: VeiculoEntity veiculo = new VeiculoEntity(); veiculo = manager.find(VeiculoEntity.class, 1); veiculo.setPlaca(“DHZ-5678”); veiculo.setModelo(“Fusca”); manager.refresh(veiculo);

  13. API EntityManager • find (Class classeEntidade, Object PK): • localiza uma entidade através de sua chave primária (PK); • Retorna null caso a entidade não seja localizada; • Uma entidade localizada torna-se automaticamente gerenciada; • Exemplo: // Busca veiculo com id igual a 10 VeiculoEntity veiculo = manager.find(VeiculoEntity.class, 10); veiculo.setPlaca(“HHH-7777”);

  14. API EntityManager • remove (Object entidade): • Remove uma entidade acoplada; • Para excluir entidades desacopladas primeiro deve-se localizá-la através do método find ou getReference; • Exemplo: VeiculoEntity veiculo = manager.find(VeiculoEntity.class, 10); manager.remove(veiculo);

More Related