32
JPA de A à Z: POR QUE CONHECER? @mmalaquias1

Jpa de a à z por que conhecer jpa

Embed Size (px)

Citation preview

Page 1: Jpa de a à z  por que conhecer jpa

JPA de A à Z: POR QUE CONHECER?

@mmalaquias1

Page 2: Jpa de a à z  por que conhecer jpa

COM QUEM VOCÊ VAI?

- Mateus Malaquias- Bacharel em Sistema de Informação- @mmalaquias1- Filhote da comunidade JavaBahia- Ex-jogador de World of Warcraft

Page 3: Jpa de a à z  por que conhecer jpa

NÃO DEIXE DE PARTICIPAR!

Page 4: Jpa de a à z  por que conhecer jpa

O PROBLEMA SEMPRE FOI...

OO RELACIONAL

Page 5: Jpa de a à z  por que conhecer jpa

SQL (STRUCTURE QUERY LANGUAGE)

Page 6: Jpa de a à z  por que conhecer jpa

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

Page 7: Jpa de a à z  por que conhecer jpa

JDBC (JAVA DATABASE CONNECTIVITY)

Page 8: Jpa de a à z  por que conhecer jpa

JDBC (JAVA DATABASE CONNECTIVITY)

Page 9: Jpa de a à z  por que conhecer jpa

JDBC (JAVA DATABASE CONNECTIVITY)

Page 10: Jpa de a à z  por que conhecer jpa

JDBC (JAVA DATABASE CONNECTIVITY)

Page 11: Jpa de a à z  por que conhecer jpa

JDBC (JAVA DATABASE CONNECTIVITY)

Page 12: Jpa de a à z  por que conhecer jpa

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

Page 13: Jpa de a à z  por que conhecer jpa

ORM (OBJECT-RELATIONAL MAPPING)

Page 14: Jpa de a à z  por que conhecer jpa

ORM - IMPLEMENTAÇÕES

Se vai ter mais de um, vai virar bagunça!

Page 15: Jpa de a à z  por que conhecer jpa

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)

Page 16: Jpa de a à z  por que conhecer jpa

JPA (JAVA PERSISTENCE API)

APLICAÇÃO

JPA

PROVIDER

BANCO DE DADOS

JDBC

DRIVER

Page 17: Jpa de a à z  por que conhecer jpa

JPA - PROVIDER

Batoo

Page 18: Jpa de a à z  por que conhecer jpa

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.

Page 19: Jpa de a à z  por que conhecer jpa

JPA - LEMBRA DO POJO?

Page 20: Jpa de a à z  por que conhecer jpa

JPA - ENTIDADE

Page 21: Jpa de a à z  por que conhecer jpa

JPA - ENTIDADE

Page 22: Jpa de a à z  por que conhecer jpa

JPA - ENTIDADE COM JOIN

Page 23: Jpa de a à z  por que conhecer jpa

JPA - CRUD BASICO

Page 24: Jpa de a à z  por que conhecer jpa

JPA - CONSULTAS

Page 25: Jpa de a à z  por que conhecer jpa

JPA - JAVA PERSISTENCE QUERY LANGUAGE (JPQL)

Page 26: Jpa de a à z  por que conhecer jpa

JPA - CRITERIA

Page 27: Jpa de a à z  por que conhecer jpa

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.

Page 28: Jpa de a à z  por que conhecer jpa

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.

Page 29: Jpa de a à z  por que conhecer jpa

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.

Page 30: Jpa de a à z  por que conhecer jpa

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.

Page 31: Jpa de a à z  por que conhecer jpa

ALTERNATIVAS PARA JPA

Page 32: Jpa de a à z  por que conhecer jpa

OBRIGADO POR TER AGUENTADO ATE AQUI!

….DÚVIDAS?