Migrando de JDBC para JPA
Download
Report
Transcript Migrando de JDBC para JPA
MIGRANDO DE JDBC PARA JPA
Hébert Coelho de Oliveira
SOBRE MIM
10 anos como desenvolvedor
3+ anos com Java
Pós graduação: MIT Engenharia de Software com
Java
Certificações: SCJP, SCWCD, OCBCD (em breve)
Criador do blog http://uaihebert.com
Professor de Java básico/Web
E o mais importante, torcedor do Real Madrid
O QUE É JDBC?
JDBC não é – Joça Do Barcelona, caiu!
JDBC é - Java Database Connectivity
Considerada API de baixo nível.
Serve de ponte
Aplicação
JDBC
Banco de
dados
FACILIDADES DO JDBC
Drivers
ResultStatement
Migrar de Banco de dados*
Fácil configuração: URL, Rede, Instalação
INSERINDO NO BANCO
E como ficaria 1x1?
INSERINDO EM RELACIONAMENTO 1X1
E como ficaria 1xN?
INSERINDO EM RELACIONAMENTO 1XN
E se fosse N x N?
INSERINDO EM RELACIONAMENTO N X N
Alguém imagina qual seria o comportamento do
script acima caso o sexto insert desse algum erro?
E como ficaria o ID na vida real?
E como ficaria um insert em uma tabela
passando campos dinâmicos?
CAMPOS DINÂMICOS
Bastante suscetível a erros, não?
ONDE ESTÁ O ERRO?
ONDE ESTÁ O ERRO?
ONDE ESTÁ O ERRO?
ONDE ESTÁ O ERRO?
COMO SERIA UMA CONSULTA
Imagine se essa classe tivesse os 30 atributos
retornados nessa consulta?
VOCÊ PODERIA TER A SEGUINTE REAÇÃO....
OU ENTÃO...
E QUEM TE PASSOU A “TAREFA CHATA”...
ONDE CHEGAMOS?
SQL complexo é difícil dar manutenção
Muito código em SQL para uma ação simples
Não é muito viável ter diversos bancos de dados
na mesma aplicação
Caso algum atributo de uma classe mude, todos
os “scripts” terão que mudar
Por que com JPA os “scripts” não mudariam?
Por que com JPA eu não teria problemas de
migração de banco?
FINALMENTE VAMOS FALAR DO JPA
\O/
O que é o JPA? O que é Hibernate, EclipseLink,
OpenJPA?
Como o JPA trabalha?
Como ele é portável? O que é JPQL?
Como ele trata os relacionamentos?
É possível migrar aos poucos?
Como funciona a transação com o banco de
dados?
Como ele funciona com web e desktop?
E como última pergunta....
Como o Real Madrid consegue ser tão bom???
CONFIGURAÇÃO
Arquivo /META-INF/persistence.xml
BIBLIOTECAS
Bibliotecas da Implementação
ENTITY
O que é uma Entity? O que uma classe precisa
para ser uma Entity?
ENTITY
INSERINDO NO BANCO
E como ficaria 1x1?
RELACIONAMENTO 1X1 (ONE TO ONE)
Uni direcional:
Bi direcional
INSERINDO EM RELACIONAMENTO 1X1
E como ficaria 1xN?
RELACIONAMENTO 1XN (ONE TO MANY)
Uni direcional:
Bi direcional
INSERINDO EM RELACIONAMENTO 1XN
E se fosse N x N?
RELACIONAMENTO N X N (MANY TO
MANY)
Uni direcional:
Bi direcional
INSERINDO EM RELACIONAMENTO N X N
COMO SERIA UMA CONSULTA
Imagine se essa classe tivesse os 30 atributos
retornados nessa consulta?
VOCÊ PODERIA TER A SEGUINTE REAÇÃO....
OU ENTÃO...
E QUEM TE PASSOU A “TAREFA CHATA”...
FINALIZANDO
Facilidade de migrar o banco
Redução do trabalho manual para persistir dados
Maior agilidade no desenvolvimento
Desacopla mais a aplicação
E por último...
Dá mais tempo para o desenvolvedor realizar
testes, deixa o código limpo.
E lógico, dá mais tempo para ver jogos do Real
Madrid!
DÚVIDAS?
Agradeço a todos pela oportunidade. [=
http://uaihebert.com
[email protected]