Minicurso JPA e HibernateFrederico Maia Arantes
Quem sou eu?Frederico Maia Arantes – @fredmaiaProgramador Java EE – PC SistemasInstrutor de cursos Java – Supera TecnologiaOracle Certified Professional, Java SE 6 Programmer (OCJP)Um dos coordenadores do GojavaArtigo publicado na Easy Java Magazinehttp://devsexperts.com
PersistênciaO que é persistência?
PersistênciaO que é persistência?
PersistênciaO que é persistência?Aplicações precisam armazenar seus dados em algum lugar. Queremos processar dados e podermos acessá-los posteriormente.
PersistênciaO que é persistência?Aplicações precisam armazenar seus dados em algum lugar. Queremos processar dados e podermos acessá-los posteriormente.Na maioria dos casos são utilizados banco de dados relacionais.
PersistênciaO que é persistência?Aplicações precisam armazenar seus dados em algum lugar. Queremos processar dados e podermos acessá-los posteriormente.Na maioria dos casos são utilizados banco de dados relacionais.Em contra partida a maioria das aplicações são desenvolvidas no modelo orientado a objetos.
Persistência
Persistência
Relacional x Orientado a ObjetosDois paradigmas diferentes
Relacional x Orientado a ObjetosDois paradigmas diferentesComo resolver as diferenças?
Relacional x Orientado a ObjetosDois paradigmas diferentesComo resolver as diferenças?Como mapear as tabelas do banco de dados para os objetos em Java?
Relacional x Orientado a ObjetosDois paradigmas diferentesComo resolver as diferenças?Como mapear as tabelas do banco de dados para os objetos em Java?Ou devemos mapear os objetos para tabelas?
Relacional x Orientado a Objetos
JDBCJDBC (Java Database Connectivity) especificação padrão de persistência
JDBCJDBC (Java Database Connectivity) especificação padrão de persistênciaQue tal juntar os dois mundos?
JDBCJDBC (Java Database Connectivity) especificação padrão de persistênciaQue tal juntar os dois mundos?Misturar o modelo relacional com o modelo orientado a objetos, misturar o código Java com SQL
JDBCJDBC (Java Database Connectivity) especificação padrão de persistênciaQue tal juntar os dois mundos?Misturar o modelo relacional com o modelo orientado a objetos, misturar o código Java com SQLOk, show me the code!
JDBC – Conectando no BD
JDBC – Inserindo uma Pessoa
JDBC – Buscando uma Pessoa
JDBC ??
JDBCMapeamento nada não muito intuitivoE se eu precisar mudar meu banco de dados?Tenho que aprender SQL e Java?Para cada banco, o SQL pode variarTenho que aprender o SQL de cada banco?
Tenho mesmo que usar JDBC ??Você precisar ser um herói !!
Tenho mesmo que usar JDBC ??Você precisar ser um herói !!
HibernateO que é hibernate?
Hibernate
Hibernate    É um estado letárgico pelo qual muitos animais endotérmicos passam durante o inverno, principalmente em regiões temperadas e árticas.
HibernateNOT!    É um estado letárgico pelo qual muitos animais endotérmicos passam durante o inverno, principalmente em regiões temperadas e árticas.
HibernateFramework para Mapeamento Objeto Relacional (ORM)Permite que desenvolvamos naturalmente usando o modelo orientados a objetosPersistência transparenteSimplifica o desenvolvimentoIndependente de banco de dados
Hibernate...Mantido pela empresa JBossNão faz parte da especificação padrão do JavaE se a JBoss cancelar o projeto? E se o Hibernate parar de evoluir? (você tem essa preocupação?)Se é tão bom, porque não colocá-lo nas tais especificações Java??
JPA (Java Persistence API)Nova especificação para persistênciaJá estamos na versão 2.0 da JPABaseada nos principais frameworks de mercadoÉ uma especificação portanto precisa de frameworks que a implementem como  Hibernate, EclipseLink e TopLinkOk, show me thecode!
JPA – Arquivo de Configuração
JPA – Conectando no BD
JPA – Inserindo uma Pessoa
JPA – Buscando uma Pessoa
JPA é complicado né?
JPA é complicado né?Ué, num achei não.
JPA - MapeamentoMapear o modelo orientado a objetos e o modelo entidade relacionamento.
JPA - MapeamentoMapear o modelo orientado a objetos e o modelo entidade relacionamento.@Entity: aparece antes do nome das classes que terão objetos persistidos no  BD
JPA - MapeamentoMapear 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
JPA - MapeamentoMapear 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
Classe Java Comum
Classe Java para JPA
JPAQue saco esse monte de teoria...
JPA - CodificandoPersistindo (persist)Buscando (find e getReference)Removendo (remove)AtualizandoListando (query, resultList)
JPA - CodificandoTransações (begin, commit)Restrições (length, nullable, unique)Data (@Temporal: Date, Time, Timestamp)Atributos não persistentes (@Transiente)
JPA - CodificandoEntityManagerFactory é caroJPAUtil  retornando conexões (static)Criando um DAO Genérico
Perguntas?
Contatofredericomaia10@gmail.com@SuperaTI   /   @fredmaiahttp://www.supera.com.brhttp://devsexperts.com

Minicurso jpa e hibernate

  • 1.
    Minicurso JPA eHibernateFrederico Maia Arantes
  • 2.
    Quem sou eu?FredericoMaia Arantes – @fredmaiaProgramador Java EE – PC SistemasInstrutor de cursos Java – Supera TecnologiaOracle Certified Professional, Java SE 6 Programmer (OCJP)Um dos coordenadores do GojavaArtigo publicado na Easy Java Magazinehttp://devsexperts.com
  • 3.
    PersistênciaO que épersistência?
  • 4.
    PersistênciaO que épersistência?
  • 5.
    PersistênciaO que épersistência?Aplicações precisam armazenar seus dados em algum lugar. Queremos processar dados e podermos acessá-los posteriormente.
  • 6.
    PersistênciaO que épersistência?Aplicações precisam armazenar seus dados em algum lugar. Queremos processar dados e podermos acessá-los posteriormente.Na maioria dos casos são utilizados banco de dados relacionais.
  • 7.
    PersistênciaO que épersistência?Aplicações precisam armazenar seus dados em algum lugar. Queremos processar dados e podermos acessá-los posteriormente.Na maioria dos casos são utilizados banco de dados relacionais.Em contra partida a maioria das aplicações são desenvolvidas no modelo orientado a objetos.
  • 8.
  • 9.
  • 10.
    Relacional x Orientadoa ObjetosDois paradigmas diferentes
  • 11.
    Relacional x Orientadoa ObjetosDois paradigmas diferentesComo resolver as diferenças?
  • 12.
    Relacional x Orientadoa ObjetosDois paradigmas diferentesComo resolver as diferenças?Como mapear as tabelas do banco de dados para os objetos em Java?
  • 13.
    Relacional x Orientadoa ObjetosDois paradigmas diferentesComo resolver as diferenças?Como mapear as tabelas do banco de dados para os objetos em Java?Ou devemos mapear os objetos para tabelas?
  • 14.
  • 15.
    JDBCJDBC (Java DatabaseConnectivity) especificação padrão de persistência
  • 16.
    JDBCJDBC (Java DatabaseConnectivity) especificação padrão de persistênciaQue tal juntar os dois mundos?
  • 17.
    JDBCJDBC (Java DatabaseConnectivity) especificação padrão de persistênciaQue tal juntar os dois mundos?Misturar o modelo relacional com o modelo orientado a objetos, misturar o código Java com SQL
  • 18.
    JDBCJDBC (Java DatabaseConnectivity) especificação padrão de persistênciaQue tal juntar os dois mundos?Misturar o modelo relacional com o modelo orientado a objetos, misturar o código Java com SQLOk, show me the code!
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
    JDBCMapeamento nada nãomuito intuitivoE se eu precisar mudar meu banco de dados?Tenho que aprender SQL e Java?Para cada banco, o SQL pode variarTenho que aprender o SQL de cada banco?
  • 24.
    Tenho mesmo queusar JDBC ??Você precisar ser um herói !!
  • 25.
    Tenho mesmo queusar JDBC ??Você precisar ser um herói !!
  • 26.
  • 27.
  • 28.
    Hibernate É um estado letárgico pelo qual muitos animais endotérmicos passam durante o inverno, principalmente em regiões temperadas e árticas.
  • 29.
    HibernateNOT! É um estado letárgico pelo qual muitos animais endotérmicos passam durante o inverno, principalmente em regiões temperadas e árticas.
  • 30.
    HibernateFramework para MapeamentoObjeto Relacional (ORM)Permite que desenvolvamos naturalmente usando o modelo orientados a objetosPersistência transparenteSimplifica o desenvolvimentoIndependente de banco de dados
  • 31.
    Hibernate...Mantido pela empresaJBossNão faz parte da especificação padrão do JavaE se a JBoss cancelar o projeto? E se o Hibernate parar de evoluir? (você tem essa preocupação?)Se é tão bom, porque não colocá-lo nas tais especificações Java??
  • 32.
    JPA (Java PersistenceAPI)Nova especificação para persistênciaJá estamos na versão 2.0 da JPABaseada nos principais frameworks de mercadoÉ uma especificação portanto precisa de frameworks que a implementem como Hibernate, EclipseLink e TopLinkOk, show me thecode!
  • 33.
    JPA – Arquivode Configuração
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
    JPA é complicadoné?Ué, num achei não.
  • 39.
    JPA - MapeamentoMapearo modelo orientado a objetos e o modelo entidade relacionamento.
  • 40.
    JPA - MapeamentoMapearo modelo orientado a objetos e o modelo entidade relacionamento.@Entity: aparece antes do nome das classes que terão objetos persistidos no BD
  • 41.
    JPA - MapeamentoMapearo 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
  • 42.
    JPA - MapeamentoMapearo 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
  • 43.
  • 44.
  • 45.
    JPAQue saco essemonte de teoria...
  • 46.
    JPA - CodificandoPersistindo(persist)Buscando (find e getReference)Removendo (remove)AtualizandoListando (query, resultList)
  • 47.
    JPA - CodificandoTransações(begin, commit)Restrições (length, nullable, unique)Data (@Temporal: Date, Time, Timestamp)Atributos não persistentes (@Transiente)
  • 48.
    JPA - CodificandoEntityManagerFactoryé caroJPAUtil retornando conexões (static)Criando um DAO Genérico
  • 49.
  • 50.
    Contatofredericomaia10@gmail.com@SuperaTI / @fredmaiahttp://www.supera.com.brhttp://devsexperts.com