Introdução a JPA e Hibernate - TDC 2012

1,748 views
1,563 views

Published on

Introdução a JPA e Hibernate - TDC 2012

  1. 1. Trilha – Java EE University Frederico Maia ArantesDesenvolvedor de Software / Instrutor / Empreendedor Globalcode – Open4education
  2. 2. Introdução à JPA 2 e Hibernate Produtividade persistindo dados em Java Globalcode – Open4education
  3. 3. Sobre mim Frederico Maia Arantes Globalcode – Open4education
  4. 4. Agenda Persistência de dados O que é JPA? O que é Hibernate? Mapeando minhas entidades Relacionamentos Estratégias de herança E agora, pra onde vou? Globalcode – Open4education
  5. 5. Persistência de dados“A persistência de dados, na computação, refere-seao armazenamento não-volátil de dados, porexemplo, o armazenamento em um dispositivo físicocomo um disco rígido. Quando se grava um arquivono disco, por exemplo, o dado está sendo“eternizado”, ou seja, deixa de ficar volátil namemória RAM e passa a ser escrito num dispositivoque armazena a informação de modo que ela nãodespareça facilmente.” Wikipedia Globalcode – Open4education
  6. 6. Persistência de dados Em Java e desenvolvimento de software em geral, persistência de dados significa gravar dados Na enorme maioria dos casos, gravamos em bancos de dados relacionais (por enquanto) Em contra partida, desenvolvemos orientados a objetos. Dois paradigmas bem diferentes Globalcode – Open4education
  7. 7. Persistência de dados Globalcode – Open4education
  8. 8. Persistência de dados Globalcode – Open4education
  9. 9. Persistência de dados Relacional x Orientado a Objetos. Dois paradigmas bem diferentes. Como resolver as diferenças? Como mapear as tabelas do banco de dados para os objetos Java? Ou deveríamos mapear os objetos para as tabelas? Globalcode – Open4education
  10. 10. Surge o Super Hibernate! Globalcode – Open4education
  11. 11. O que é Hibernate? Framework para mapeamento objeto relacional Permite que desenvolvamos naturalmente no modelo orientado a objetos Persistência transparente, simplificando e agilizando o desenvolvimento Independente de banco de dados Globalcode – Open4education
  12. 12. O que é Hibernate? Mantido pela JBoss e comunidade Java Não faz parte da especificação padrão Java E se a JBoss parar de desenvolver o projeto? Como ficamos? Queremos continuá-lo! Queremos que ele se torne um padrão Java! Globalcode – Open4education
  13. 13. O que é JPA? Java Persistence API, especificação de persistência de dados em Java Baseada nos principais frameworks do mercado como o Hibernate É uma especificação! Precisa de uma implementação como Hibernate, TopLink e EclipseLink. JPA e Hibernate não são a mesma coisa! Show me the code! Globalcode – Open4education
  14. 14. Inserindo dados sem JPA Globalcode – Open4education
  15. 15. Inserindo dados com JPA Globalcode – Open4education
  16. 16. Buscando dados sem JPA Globalcode – Open4education
  17. 17. Buscando dados com JPA Globalcode – Open4education
  18. 18. Mapeamento Mapear o modelo orientado a objetos e o modelo entidade relacionamento @Entity: aparece antes do nome das classes que terão objetos persistidos no BD @Id: indica a chave primária @GeneratedValue: indica que o valor da chave primária deve ser gerado pelo BD quando um registro é inserido Globalcode – Open4education
  19. 19. Classe Java comum Globalcode – Open4education
  20. 20. Classe Java com JPA Globalcode – Open4education
  21. 21. Operações básicas Persistindo: Pessoa p = new Pessoa(“Fred”); manager.persist(p); Buscando: manager.find(Pessoa.class,1L); manager.getReference(Pessoa.class,1L); Removendo: manager.remove(Pessoa.class,1L); Globalcode – Open4education
  22. 22. Operações básicas Atualizando: Pessoa p = manager.find(Pessoa.class, 1L); p.setNome(“Novo Nome”); manager.persist(p); Listando:Query query = manager.createQuery(“select p from Pessoa p”);List<Pessoa> pessoas = query.getResultList(); Globalcode – Open4education
  23. 23. Relacionamentos Os relacionamentos entre as entidades de um domínio devem ser expressos na modelagem através de vínculos entre classes. Podemos definir quatro tipos de relacionamentos de acordo com a cardinalidade. One to One One to Many Many to One Many to Many Globalcode – Open4education
  24. 24. Relacionamentos One to One: por exemplo, um estado é governado por apenas um governador e um governador governa apenas um estado.@Entitypublic class Estado { @OneToOne private Governador governador;} Globalcode – Open4education
  25. 25. Relacionamentos One to Many: por exemplo, um departamento possui muitos funcionários e um funcionário trabalha em apenas em um departamento.@Entitypublic class Departamento { @OneToMany private List<Funcionario> funcionarios;} Globalcode – Open4education
  26. 26. Relacionamentos Many to One: por exemplo, um pedido pertence a apenas um cliente e um cliente faz muitos pedidos.@Entitypublic class Pedido { @ManyToOne private Cliente cliente;} Globalcode – Open4education
  27. 27. Relacionamentos Many to Many: por exemplo, um livro possui muitos autores e um autor possui muitos livros.@Entitypublic class Livro { @ManyToMany private List<Autor> autores;} Globalcode – Open4education
  28. 28. Relacionamentos Relacionamentos bidirecionais: quando expressamos um relacionamento entre entidades colocando um atributo em uma das entidades, podemos acessar a outra entidade a partir da primeira. Vamos ver um exemplo. Globalcode – Open4education
  29. 29. Relacionamentos@Entitypublic class Carro { @OneToOne private Motor motor;}@Entitypublic class Motor { @OneToOne(mappedBy = “motor”) private Carro carro;} Globalcode – Open4education
  30. 30. Estratégias de herança Um conceito um pouco complexo, a princípio, de se ̧ ̧ mapear é o de Heranca. A especificacão JPA define ̂ tres estratégia para realizar o mapeamento de ̧ heranca. Single Table Joined Table per Class Globalcode – Open4education
  31. 31. Single Table A mais comum e a que possibilita melhor ̧ desempenho em relacão a velocidade das consultas. Será criada apenas uma tabela com o nome da super classe para armazenar os dados dos objetos. Globalcode – Open4education
  32. 32. Joined Uma tabela para cada classe da hierarquia é criada. Em cada tabela, apenas os campos referentes aos atributos da classe correspondente são criados. As tabelas correspondentes às sub classes possuem chaves estrangeiras vinculadas à tabela correspondente à super classe. Globalcode – Open4education
  33. 33. Table per Class Uma tabela para cada classe concreta da hierarquia é criada. Os dados de um objeto não são colocados em tabelas diferentes. Para remontar um objeto não é ̧ necessário realizar operacões de join. A desvantagem é que não existe um vínculo explícito no banco de dados entres as tabelas. Globalcode – Open4education
  34. 34. E agora pra onde vou? http://docs.oracle.com/javaee/ Apostilas da K19 Blog e apostilas da Caelum Livro: Java Persistence With Hibernate Documentação oficial do Hibernate Vários Ebooks gratuitos e em inglês (WowEbook) Globalcode – Open4education
  35. 35. Dúvidas?Contatos fredericomaia10@gmail.com fredmaia fredericomaia10 Globalcode – Open4education

×