Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Minicurso jpa e hibernate

1,665 views

Published on

  • Be the first to comment

Minicurso jpa e hibernate

  1. 1. Minicurso JPA e Hibernate<br />Frederico Maia Arantes<br />
  2. 2. Quem sou eu?<br />Frederico Maia Arantes – @fredmaia<br />Programador Java EE – PC Sistemas<br />Instrutor de cursos Java – Supera Tecnologia<br />Oracle Certified Professional, Java SE 6 Programmer (OCJP)<br />Um dos coordenadores do Gojava<br />Artigo publicado na Easy Java Magazine<br />http://devsexperts.com<br />
  3. 3. Persistência<br />O que é persistência?<br />
  4. 4. Persistência<br />O que é persistência?<br />
  5. 5. Persistência<br />O que é persistência?<br />Aplicações precisam armazenar seus dados em algum lugar. Queremos processar dados e podermos acessá-los posteriormente.<br />
  6. 6. Persistência<br />O que é persistência?<br />Aplicações precisam armazenar seus dados em algum lugar. Queremos processar dados e podermos acessá-los posteriormente.<br />Na maioria dos casos são utilizados banco de dados relacionais.<br />
  7. 7. Persistência<br />O que é persistência?<br />Aplicações precisam armazenar seus dados em algum lugar. Queremos processar dados e podermos acessá-los posteriormente.<br />Na maioria dos casos são utilizados banco de dados relacionais.<br />Em contra partida a maioria das aplicações são desenvolvidas no modelo orientado a objetos.<br />
  8. 8. Persistência<br />
  9. 9. Persistência<br />
  10. 10. Relacional x Orientado a Objetos<br />Dois paradigmas diferentes<br />
  11. 11. Relacional x Orientado a Objetos<br />Dois paradigmas diferentes<br />Como resolver as diferenças?<br />
  12. 12. Relacional x Orientado a Objetos<br />Dois paradigmas diferentes<br />Como resolver as diferenças?<br />Como mapear as tabelas do banco de dados para os objetos em Java?<br />
  13. 13. Relacional x Orientado a Objetos<br />Dois paradigmas diferentes<br />Como resolver as diferenças?<br />Como mapear as tabelas do banco de dados para os objetos em Java?<br />Ou devemos mapear os objetos para tabelas?<br />
  14. 14. Relacional x Orientado a Objetos<br />
  15. 15. JDBC<br />JDBC (Java Database Connectivity) especificação padrão de persistência<br />
  16. 16. JDBC<br />JDBC (Java Database Connectivity) especificação padrão de persistência<br />Que tal juntar os dois mundos?<br />
  17. 17. JDBC<br />JDBC (Java Database Connectivity) especificação padrão de persistência<br />Que tal juntar os dois mundos?<br />Misturar o modelo relacional com o modelo orientado a objetos, misturar o código Java com SQL<br />
  18. 18. JDBC<br />JDBC (Java Database Connectivity) especificação padrão de persistência<br />Que tal juntar os dois mundos?<br />Misturar o modelo relacional com o modelo orientado a objetos, misturar o código Java com SQL<br />Ok, show me the code!<br />
  19. 19. JDBC – Conectando no BD<br />
  20. 20. JDBC – Inserindo uma Pessoa<br />
  21. 21. JDBC – Buscando uma Pessoa<br />
  22. 22. JDBC ??<br />
  23. 23. JDBC<br />Mapeamento nada não muito intuitivo<br />E se eu precisar mudar meu banco de dados?<br />Tenho que aprender SQL e Java?<br />Para cada banco, o SQL pode variar<br />Tenho que aprender o SQL de cada banco?<br />
  24. 24. Tenho mesmo que usar JDBC ??<br />Você precisar ser um herói !!<br />
  25. 25. Tenho mesmo que usar JDBC ??<br />Você precisar ser um herói !!<br />
  26. 26. Hibernate<br />O que é hibernate?<br />
  27. 27. Hibernate<br />
  28. 28. Hibernate<br /> É um estado letárgico pelo qual muitos animais endotérmicos passam durante o inverno, principalmente em regiões temperadas e árticas.<br />
  29. 29. Hibernate<br />NOT!<br /> É um estado letárgico pelo qual muitos animais endotérmicos passam durante o inverno, principalmente em regiões temperadas e árticas.<br />
  30. 30. Hibernate<br />Framework para Mapeamento Objeto Relacional (ORM)<br />Permite que desenvolvamos naturalmente usando o modelo orientados a objetos<br />Persistência transparente<br />Simplifica o desenvolvimento<br />Independente de banco de dados<br />
  31. 31. Hibernate...<br />Mantido pela empresa JBoss<br />Não faz parte da especificação padrão do Java<br />E se a JBoss cancelar o projeto? E se o Hibernate parar de evoluir? <br />(você tem essa preocupação?)<br />Se é tão bom, porque não colocá-lo nas tais especificações Java??<br />
  32. 32. JPA (Java Persistence API)<br />Nova especificação para persistência<br />Já estamos na versão 2.0 da JPA<br />Baseada nos principais frameworks de mercado<br />É uma especificação portanto precisa de frameworks que a implementem como Hibernate, EclipseLink e TopLink<br />Ok, show me thecode!<br />
  33. 33. JPA – Arquivo de Configuração<br />
  34. 34. JPA – Conectando no BD<br />
  35. 35. JPA – Inserindo uma Pessoa<br />
  36. 36. JPA – Buscando uma Pessoa<br />
  37. 37. JPA é complicado né?<br />
  38. 38. JPA é complicado né?<br />Ué, num achei não.<br />
  39. 39. JPA - Mapeamento<br />Mapear o modelo orientado a objetos e o modelo entidade relacionamento.<br />
  40. 40. JPA - Mapeamento<br />Mapear o modelo orientado a objetos e o modelo entidade relacionamento.<br />@Entity: aparece antes do nome das classes que terão objetos persistidos no BD<br />
  41. 41. JPA - Mapeamento<br />Mapear o modelo orientado a objetos e o modelo entidade relacionamento.<br />@Entity: aparece antes do nome das classes que terão objetos persistidos no BD<br />@Id: indica a chave primária<br />
  42. 42. JPA - Mapeamento<br />Mapear o modelo orientado a objetos e o modelo entidade relacionamento.<br />@Entity: aparece antes do nome das classes que terão objetos persistidos no BD<br />@Id: indica a chave primária<br />@GeneratedValue: indica que o valor da chave primária deve ser gerado pelo BD quando um registro é inserido<br />
  43. 43. Classe Java Comum<br />
  44. 44. Classe Java para JPA<br />
  45. 45. JPA<br />Que saco esse monte de teoria...<br />
  46. 46. JPA - Codificando<br />Persistindo (persist)<br />Buscando (find e getReference)<br />Removendo (remove)<br />Atualizando<br />Listando (query, resultList)<br />
  47. 47. JPA - Codificando<br />Transações (begin, commit)<br />Restrições (length, nullable, unique)<br />Data (@Temporal: Date, Time, Timestamp)<br />Atributos não persistentes (@Transiente)<br />
  48. 48. JPA - Codificando<br />EntityManagerFactory é caro<br />JPAUtil retornando conexões (static)<br />Criando um DAO Genérico<br />
  49. 49. Perguntas?<br />
  50. 50. Contato<br />fredericomaia10@gmail.com<br />@SuperaTI / @fredmaia<br />http://www.supera.com.br<br />http://devsexperts.com<br />

×