360 likes | 443 Views
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 N D
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?
Como seria uma consulta • Imagine se essa classe tivesse os 30 atributos retornados nessa consulta?
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?
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
Como seria uma consulta • Imagine se essa classe tivesse os 30 atributos retornados nessa consulta?
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 contato@uaihebert.com