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]