JPA de A à Z: POR QUE CONHECER?
@mmalaquias1
COM QUEM VOCÊ VAI?
- Mateus Malaquias
- Bacharel em Sistema de Informação
- @mmalaquias1
- Filhote da comunidade JavaBahia
- Ex-jogador de World of Warcraft
NÃO DEIXE DE
PARTICIPAR!
O PROBLEMA SEMPRE FOI...
OO RELACIONAL
SQL (STRUCTURE QUERY LANGUAGE)
JDBC (JAVA DATABASE CONNECTIVITY)
APLICAÇÃO
JDBC
DRIVER
BANCO DE
DADOS
RESUMIDAMENTE O QUE JDBC FAZ?
● Estabelece conexão com o banco de dados
● Executa consultas
● Recebe o resultados das consultas
● Executa stored procedures, triggers e etc
JDBC (JAVA DATABASE CONNECTIVITY)
JDBC (JAVA DATABASE CONNECTIVITY)
JDBC (JAVA DATABASE CONNECTIVITY)
JDBC (JAVA DATABASE CONNECTIVITY)
JDBC (JAVA DATABASE CONNECTIVITY)
JDBC (JAVA DATABASE CONNECTIVITY)
ALGUMAS DESVANTAGEM AO UTILIZAR JDBC:
● Código SQL escrito no Java
● Normalmente não trabalha bem com dois bancos ao mesmo ao
mesmo tempo.
● JDBC não é facilmente usado em grandes projetos. Por causa
da grande quantidade de código gerada.
● O Programador deve saber como trabalhar com o SQL.
● Ilusão a respeito da independência de banco de dados
● Necessidade de realizar conversão de campos para objeto na
unha
ORM (OBJECT-RELATIONAL MAPPING)
ORM - IMPLEMENTAÇÕES
Se vai ter mais de um, vai virar bagunça!
JPA (JAVA PERSISTENCE API)
● Nasceu na JSR220 (Java Specification Requests)
● Sua função é padronizar o Mapeamento-Objeto Relacional (ORM)
● Integrar a plataforma Java EE
● Não depender de container (servidores) para funcionar
● Continuar utilizando o padrão POJO
● Utilizar freneticamente as Annotations (Programação Declarativa)
JPA (JAVA PERSISTENCE API)
APLICAÇÃO
JPA
PROVIDER
BANCO DE
DADOS
JDBC
DRIVER
JPA - PROVIDER
Batoo
JPA - ESTRUTURA
PROVEDORES
PERSISTENCE CONTEXT
ENTITY MANAGER
ENTITY
Implementação da especificação
Pool que mantem todos objetos
manipulados pelo EntityManager
Responsável por todas operações
realizados junto ao banco de dados
POJO, mas com pode ser usado
com herença e polimorfismo.
JPA - LEMBRA DO POJO?
JPA - ENTIDADE
JPA - ENTIDADE
JPA - ENTIDADE COM JOIN
JPA - CRUD BASICO
JPA - CONSULTAS
JPA - JAVA PERSISTENCE QUERY LANGUAGE (JPQL)
JPA - CRITERIA
JPA - VANTAGENS
● Indepêndencia: Utilizando JPQL ou Criteria conseguimos ter uma
indepêndencia com os bancos de dados porque agora fica a cargo da
implementação da JPA em converter sua consulta em SQL nativo. Agora as
ações básicas de insert, update e delete também ficam por conta da
implementação. Com isso podemos criar uma única aplicação que vai se
comunicar com diversos bancos de dados.
● Reduz a necessidade de conhecer SQL: Não me leve a mal, ainda penso
que conhecer pelo menos o básico de SQL é fundamental para qualquer
programador. Todavia você consegue trabalhar com a JPA sem esse
conhecimento.
JPA - VANTAGENS
● Dê adeus a conversão de querys em objetos: No começo da apresentação
você teve um gostinho do trabalho que braçal necessário para se obter um
objeto com o JDBC. Justamente para não perdemos mais tempo com isso
nasceram as implementações da JPA que são capazes de realizar esse
trabalho para gente.
● Otimização automática: Nem sempre temos o trabalho de otimizar uma
consulta, mas esse é um ponto que considero critico porque muda de
implementação para implementação e nem sempre temos o resultado
desejado. Caso você precise ter um sistema em que as consultas sejam
sempre otimizadas recomendo que utilize o Batoo no lugar do Hibernate por
exemplo.
JPA - DESVANTAGENS
● Base de dados legada: Nem sempre foi possível executar triggers, functions e
procedures direto no banco de dados. Atualmente podemos fazer isso, todavia
temos que ter cuidado com o impacto que isso pode gerar ao modelo
objeto-relacional e a indepêndencia a respeito dos bancos de dados. Hoje em
dia por exemplo passo boa parte da minha atividade migrando e otimizando
procedures no Java justamente por isso.
● Chaves compostas: AH! Que raiva tenho de utilizar @embedded, trabalhar
com chaves compostas na JPA significa aumentar drasticamente a
complexidade de nossas entidades. Em determinadas situações para
executar um update ou insert por exemplo precisamos gerar muito mais
código.
JPA - DESVANTAGENS
● Curva de aprendizado para além do básico: Fazer o feijão com arroz
utilizando JPA é fácil e muito pratico, isso é bom porque atrai sempre novas
pessoas. Mas quando passamos para um nível mais avançado como por
exemplo utilizar chaves compostas, chace, criteria e relacionamentos
bidirecionais as pessoas começam a encontrar diversas dificuldades. Esse aqui
é justamente um dos motivos de existir a serie JPA de A à Z no blog.
● Unir consultas: Esse pra mim é o defeito mais grave na especificação,
simplesmente não conseguimos realizar união de consultas. Claro que
podemos utilizar alguns artifícios para simular uma união, mas na grande
maioria das vezes é necessários optar pelo SQL nativo e ai vai embora a
independência de banco de dados.
ALTERNATIVAS PARA JPA
OBRIGADO POR TER
AGUENTADO ATE AQUI!
….
DÚVIDAS?

Mais conteúdo relacionado

PDF
Introdução ao CakePHP
PDF
2km Workshop: Bake, o seu melhor amigo ;)
PDF
Navegando em um mar de siglas do mundo java
PDF
Palestra Carreira Java Bahia Meeting
PPTX
Java User Group - O que é e como eu faço para participar?
PDF
Migrations for Java (Javou #4 - JavaCE)
PDF
Spring Data Jpa
PDF
Spring Data Jpa
Introdução ao CakePHP
2km Workshop: Bake, o seu melhor amigo ;)
Navegando em um mar de siglas do mundo java
Palestra Carreira Java Bahia Meeting
Java User Group - O que é e como eu faço para participar?
Migrations for Java (Javou #4 - JavaCE)
Spring Data Jpa
Spring Data Jpa

Destaque (8)

ODP
NoSQL - Por que e quando usar?
PDF
Usando Python na Google App Engine
PPT
Tdd principios oo
PPT
Google Maps API V3
PDF
Gaelyk: Desenvolvimento Ágil em Groovy nas Nuvens da Google
ODP
Coding Dojo em 5 Minutos
PDF
PDF
No sql o_que_e_isso.key
NoSQL - Por que e quando usar?
Usando Python na Google App Engine
Tdd principios oo
Google Maps API V3
Gaelyk: Desenvolvimento Ágil em Groovy nas Nuvens da Google
Coding Dojo em 5 Minutos
No sql o_que_e_isso.key
Anúncio

Semelhante a Jpa de a à z por que conhecer jpa (20)

PDF
JPA - Mini-Livro - Iniciação e Conceitos
ODP
Processos iniciais do mapeamento OR
PPTX
palestra_migrando_jdbcpalestra_migrando_jdbc((1).pptx
PDF
Persistência com JPA usando o NetBeans 7
PDF
JPA com Hibernate
PDF
PPT
JPA - Java Persistence API
PPTX
Jpa, hibernate and jpql
PDF
Persistência Java: Hibernate e JPA
PPTX
Minicurso jpa e hibernate
PPT
Aula JPA
PDF
Introdução ao JPA com Hibernate
PDF
Introdução ao JPA com Hibernate
PPT
Curso De Hibernate 3
PPTX
Introdução ao JDBC - BarreirasJUG
PDF
Curso de Java (Parte 5)
PDF
Linguagem 3 (JPA e hibernate)
PDF
Bancos de dados e jdbc java para desenvolvimento web
PPT
Mini curso JBC
JPA - Mini-Livro - Iniciação e Conceitos
Processos iniciais do mapeamento OR
palestra_migrando_jdbcpalestra_migrando_jdbc((1).pptx
Persistência com JPA usando o NetBeans 7
JPA com Hibernate
JPA - Java Persistence API
Jpa, hibernate and jpql
Persistência Java: Hibernate e JPA
Minicurso jpa e hibernate
Aula JPA
Introdução ao JPA com Hibernate
Introdução ao JPA com Hibernate
Curso De Hibernate 3
Introdução ao JDBC - BarreirasJUG
Curso de Java (Parte 5)
Linguagem 3 (JPA e hibernate)
Bancos de dados e jdbc java para desenvolvimento web
Mini curso JBC
Anúncio

Último (14)

PDF
SLIDES - AULA 5 - HERANÇA - Material de Cleyton Souza - IFPB
PDF
SLIDES - AULA 7 - SWING - Cleyton Souza - IFPB
PPT
09_Evolucao de software e_Refatoracao.ppt
PDF
SLIDES - AULA 3 - CLASSES E OBJETOS EM JAVA - Material de Cleyton Souza - IFPB
PPT
05_slide especificacao de sistemas de software e a uml UML.ppt
PPT
00_Apresentacao sobre o livro do sommerville_ES.ppt
PPT
07_slides de Estilos_Arquiteturais sommerville.ppt
PPT
06_slide de Arquitetura_de_Software .ppt
PDF
SLIDES - AULA 2 - INTRODUÇÃO - Material de Cleyton Souza - IFPB
PDF
SLIDES - AULA 1 - APRESENTAÇÃO - Material de Cleyton Souza - IFPB
PPT
03_slide de Gerenciamento de Projetos .ppt
PPT
10_ slides de Reuso sommerville cap 10.ppt
PPT
04_slide Requisitos de software_capitulo4
PPTX
Aula_IoT internet das coisas para iniciantes
SLIDES - AULA 5 - HERANÇA - Material de Cleyton Souza - IFPB
SLIDES - AULA 7 - SWING - Cleyton Souza - IFPB
09_Evolucao de software e_Refatoracao.ppt
SLIDES - AULA 3 - CLASSES E OBJETOS EM JAVA - Material de Cleyton Souza - IFPB
05_slide especificacao de sistemas de software e a uml UML.ppt
00_Apresentacao sobre o livro do sommerville_ES.ppt
07_slides de Estilos_Arquiteturais sommerville.ppt
06_slide de Arquitetura_de_Software .ppt
SLIDES - AULA 2 - INTRODUÇÃO - Material de Cleyton Souza - IFPB
SLIDES - AULA 1 - APRESENTAÇÃO - Material de Cleyton Souza - IFPB
03_slide de Gerenciamento de Projetos .ppt
10_ slides de Reuso sommerville cap 10.ppt
04_slide Requisitos de software_capitulo4
Aula_IoT internet das coisas para iniciantes

Jpa de a à z por que conhecer jpa

  • 1. JPA de A à Z: POR QUE CONHECER? @mmalaquias1
  • 2. COM QUEM VOCÊ VAI? - Mateus Malaquias - Bacharel em Sistema de Informação - @mmalaquias1 - Filhote da comunidade JavaBahia - Ex-jogador de World of Warcraft
  • 4. O PROBLEMA SEMPRE FOI... OO RELACIONAL
  • 6. JDBC (JAVA DATABASE CONNECTIVITY) APLICAÇÃO JDBC DRIVER BANCO DE DADOS RESUMIDAMENTE O QUE JDBC FAZ? ● Estabelece conexão com o banco de dados ● Executa consultas ● Recebe o resultados das consultas ● Executa stored procedures, triggers e etc
  • 7. JDBC (JAVA DATABASE CONNECTIVITY)
  • 8. JDBC (JAVA DATABASE CONNECTIVITY)
  • 9. JDBC (JAVA DATABASE CONNECTIVITY)
  • 10. JDBC (JAVA DATABASE CONNECTIVITY)
  • 11. JDBC (JAVA DATABASE CONNECTIVITY)
  • 12. JDBC (JAVA DATABASE CONNECTIVITY) ALGUMAS DESVANTAGEM AO UTILIZAR JDBC: ● Código SQL escrito no Java ● Normalmente não trabalha bem com dois bancos ao mesmo ao mesmo tempo. ● JDBC não é facilmente usado em grandes projetos. Por causa da grande quantidade de código gerada. ● O Programador deve saber como trabalhar com o SQL. ● Ilusão a respeito da independência de banco de dados ● Necessidade de realizar conversão de campos para objeto na unha
  • 14. ORM - IMPLEMENTAÇÕES Se vai ter mais de um, vai virar bagunça!
  • 15. JPA (JAVA PERSISTENCE API) ● Nasceu na JSR220 (Java Specification Requests) ● Sua função é padronizar o Mapeamento-Objeto Relacional (ORM) ● Integrar a plataforma Java EE ● Não depender de container (servidores) para funcionar ● Continuar utilizando o padrão POJO ● Utilizar freneticamente as Annotations (Programação Declarativa)
  • 16. JPA (JAVA PERSISTENCE API) APLICAÇÃO JPA PROVIDER BANCO DE DADOS JDBC DRIVER
  • 18. JPA - ESTRUTURA PROVEDORES PERSISTENCE CONTEXT ENTITY MANAGER ENTITY Implementação da especificação Pool que mantem todos objetos manipulados pelo EntityManager Responsável por todas operações realizados junto ao banco de dados POJO, mas com pode ser usado com herença e polimorfismo.
  • 19. JPA - LEMBRA DO POJO?
  • 22. JPA - ENTIDADE COM JOIN
  • 23. JPA - CRUD BASICO
  • 25. JPA - JAVA PERSISTENCE QUERY LANGUAGE (JPQL)
  • 27. JPA - VANTAGENS ● Indepêndencia: Utilizando JPQL ou Criteria conseguimos ter uma indepêndencia com os bancos de dados porque agora fica a cargo da implementação da JPA em converter sua consulta em SQL nativo. Agora as ações básicas de insert, update e delete também ficam por conta da implementação. Com isso podemos criar uma única aplicação que vai se comunicar com diversos bancos de dados. ● Reduz a necessidade de conhecer SQL: Não me leve a mal, ainda penso que conhecer pelo menos o básico de SQL é fundamental para qualquer programador. Todavia você consegue trabalhar com a JPA sem esse conhecimento.
  • 28. JPA - VANTAGENS ● Dê adeus a conversão de querys em objetos: No começo da apresentação você teve um gostinho do trabalho que braçal necessário para se obter um objeto com o JDBC. Justamente para não perdemos mais tempo com isso nasceram as implementações da JPA que são capazes de realizar esse trabalho para gente. ● Otimização automática: Nem sempre temos o trabalho de otimizar uma consulta, mas esse é um ponto que considero critico porque muda de implementação para implementação e nem sempre temos o resultado desejado. Caso você precise ter um sistema em que as consultas sejam sempre otimizadas recomendo que utilize o Batoo no lugar do Hibernate por exemplo.
  • 29. JPA - DESVANTAGENS ● Base de dados legada: Nem sempre foi possível executar triggers, functions e procedures direto no banco de dados. Atualmente podemos fazer isso, todavia temos que ter cuidado com o impacto que isso pode gerar ao modelo objeto-relacional e a indepêndencia a respeito dos bancos de dados. Hoje em dia por exemplo passo boa parte da minha atividade migrando e otimizando procedures no Java justamente por isso. ● Chaves compostas: AH! Que raiva tenho de utilizar @embedded, trabalhar com chaves compostas na JPA significa aumentar drasticamente a complexidade de nossas entidades. Em determinadas situações para executar um update ou insert por exemplo precisamos gerar muito mais código.
  • 30. JPA - DESVANTAGENS ● Curva de aprendizado para além do básico: Fazer o feijão com arroz utilizando JPA é fácil e muito pratico, isso é bom porque atrai sempre novas pessoas. Mas quando passamos para um nível mais avançado como por exemplo utilizar chaves compostas, chace, criteria e relacionamentos bidirecionais as pessoas começam a encontrar diversas dificuldades. Esse aqui é justamente um dos motivos de existir a serie JPA de A à Z no blog. ● Unir consultas: Esse pra mim é o defeito mais grave na especificação, simplesmente não conseguimos realizar união de consultas. Claro que podemos utilizar alguns artifícios para simular uma união, mas na grande maioria das vezes é necessários optar pelo SQL nativo e ai vai embora a independência de banco de dados.
  • 32. OBRIGADO POR TER AGUENTADO ATE AQUI! …. DÚVIDAS?