2. COM QUEM VOCÊ VAI?
- Mateus Malaquias
- Bacharel em Sistema de Informação
- @mmalaquias1
- Filhote da comunidade JavaBahia
- Ex-jogador de World of Warcraft
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
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
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)
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.
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.