Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Introdução ao JPA com Hibernate

No description
by

Juliano Vince

on 18 June 2015

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Introdução ao JPA com Hibernate

O que é JPA?
JPA é um framework leve, baseado em POJOS (Plain Old Java Objects) para persistir objetos Java. Java Persiste API é uma padrão do Java para persistência de dados que deve ser implementada por frameworks que queiram seguir este padrão, como o JPA é usado na camada de persistência com o objetivo de ter maior produtividade dos desenvolvedores, com ele controlarmos a persistência dentro do Java, com isso teremos um padrão para mapear nossos objetos para Banco de Dados.
História
Após diversos anos de reclamações sobre a complexidade na construção de aplicações com Java,
a especificação Java EE 5 teve como principal objetivo a facilidade para desenvolver aplicações JEE 5.
O EJB 3 foi o grande percursor para essa mudança fazendo os Enterprise JavaBeans mais fáceis e mais produtivos de usar.

Dessa forma os líderes das soluções de mapeamento objetos-relacionais deram um passo adiante e padronizaram também os seus produtos.
Hibernate e TopLink foram os primeiros a firmar com os fornecedores EJB.

O resultado final da especificação EJB finalizou com três documentos separados,
sendo que o terceiro era o Java Persistence API.
Essa especificação descrevia o modelo de persistência em ambos os ambientes Java SE e Java EE.
JPA e suas funcionalidade
Principais benefícios na JPA:

POJOS Persistentes:
Talvez o aspecto mais importante da JPA seja o fato que os objetos são POJOs (Plain Old Java Object ou Velho e Simples Objeto Java),
significando que os objetos possuem design simples que não dependem da herança de interfaces ou classes de frameworks externos.
Qualquer objeto com um construtor default pode ser feito persistente sem nenhuma alteração numa linha de código.
Mapeamento Objeto-Relacional com JPA é inteiramente dirigido a metadados.
Isto pode ser feito através de anotações no código ou através de um XML definido externamente.

Consultas em Objetos:
As consultas podem ser realizadas através da Java Persistence Query Language (JPQL),
uma linguagem de consulta que é derivada do EJB QL e transformada depois para SQL.
As consultas usam um esquema abstraído que é baseado no modelo de entidade como oposto às colunas na qual a entidade é armazenada.

Configurações simples:
Existe um grande número de características de persistência que a especificação oferece,
todas são configuráveis através de anotações, XML ou uma combinação das duas.
Anotações são simples de usar, convenientes para escrever e fácil de ler.
Além disso, JPA oferece diversos valores defaults, portanto para já sair usando JPA é simples, bastando algumas anotações.

Integração e Teste:
Atualmente as aplicações normalmente rodam num Servidor de aplicação, sendo um padrão do mercado hoje.
Testes em servidores de aplicação são um grande desafio e normalmente impraticáveis.
Efetuar teste de unidade e teste caixa branca em servidores de aplicação não é uma tarefa tão trivial.
Porém, isto é resolvido com uma API que trabalha fora do servidor de aplicação.
Isto permite que a JPA possa ser utilizada sem a existência de um servidor de aplicação. Dessa forma, testes unitários podem ser executados
mais facilmente.

O que é Hibernate?
O Hibernate é um framework ORM - Object Relational Mapping. É uma ferramenta que nos ajuda a persistir objetos Java em um banco de dados relacional. O trabalho do desenvolvedor é definir como os objetos são mapeados nas tabelas do banco e o Hibernate faz todo o acesso ao banco, gerando inclusive os comandos SQL necessários.

O Hibernate é um projeto opensource do grupo JBoss com muitos anos de história e liderança no mercado Java. Recentemente, boa parte das idéias do Hibernate e outros frameworks ORM foram padronizadas em uma especifição oficial do Java, a JPA - Java Persistence API. A JPA é uma especificação do JCP e possui várias implementações (o Hibernate, o Oracle Toplink, EclipseLink, OpenJPA etc).
A partir do momento em que os desenvolvedores perceberam que os frameworks ORM poderiam aumentar a produtividade e facilitar o desenvolvimento de aplicações, muitas bibliotecas como o Hibernate surgiram, enquanto outras que já existiam serviram de inspiração para o próprio Hibernate. Dessa forma, chegou-se a um cenário em que existiam muitas bibliotecas para resolver o mesmo problema,mas cada uma fazendo o trabalho à sua maneira. Portabilidade passou a ser um problema, já que se você usasse qualquer uma biblioteca, ela não seria compatível com outras que já existiam no mercado. Isso criava o famoso vendor lock-in, ou seja, uma vez usando determinada distribuição, ficava-se preso à mesma. Justamente com o intuito de resolver essa situação, em 2006, foi criada uma especificação para as bibliotecas ORM, no caso, a Java Persistence API - JPA. Essa nova especificação não representou grandes alterações na forma de usar um ORM, para quem já estava acostumado como Hibernate. Entre algumas poucas diferenças, destacam-se os nomes dos métodos e das classes que devem ser usadas.
Ferramentas Utilizadas
Eclipse - Luna
Apache Tomcat 7
Hibernate 4
Mysql
Introdução ao JPA com Hibernate
Juliano Vince de Campos
Um pouco de História
A grande maioria das aplicações construídas atualmente, de alguma maneira, necessita
se integrar com um banco de dados relacional disponibilizado em um servidor.
Esse banco de dados, costumeiramente, era criado baseado em uma modelagem,
como por exemplo, o diagrama entidade-relacionamento. Dessa forma, facilitava-se
a visualização de todas as entidades que haveria na aplicação, bem como a análise de
todo o contexto que a englobaria.
Enquanto isso, nomundo orientado a objetos, estamos acostumados a representar as entidades envolvidas na aplicação por meio de um outro diagrama. Nesse caso,pelo diagrama de classes, que possui o mesmo objetivo da modelagem entidade relacional: permitir uma visualização da aplicação num contexto global e de como todas as classes interagem entre si.
Diferenças de Paradigmas
Apesar de serem voltados a paradigmas diferentes, é possível notar algumas similaridades entre ambos os diagramas. Sendo assim, qual a dificuldade de mapearmos nosso modelo orientado a objetos para o banco de dados relacional?

Uma possível diferença é que no modelo orientado a objetos temos as classes Automovel, Modelo e Marca. Essas classes possuem - além das propriedades simples, como nome, descrição e preço - relacionamento umas com as outras. Um exemplo disso é o automóvel que está ligado a um modelo, que está ligado a uma marca.

Já o modelo entidade-relacionamento mostra um automóvel que tem um id de um modelo que por sua vez tem o id de uma marca. A diferença parece sutil ao analisarmos, mas na prática torna-se grande e pode se tornar bastante traiçoeira. No mundo OO, objetos não carregam ids de outros objetos, eles possuem um vínculo com o outro objeto inteiro. Dessa maneira, um objeto pode ter listas de outros objetos e até estruturas de dados mais complexas, formadas por outras classes. Quando vamos persisti-los em um banco de dados relacional, precisamos ajustar as diferenças existentes entre ambos os modelos. Some-se a isso o fato de que na orientação a objetos possuímos herança, polimorfismo, composição e diversas outras características que não estão presentes no modelo relacional. A essas diferenças fundamentais da forma dos objetos no mundo orientado a objetos e no mundo relacional, chamamos de Impedância Objeto-Relacional (Impedance Mismatch).
Um pouco de Historia
Um pouco de História;
JPA(Java Persistence API);
Hibernate;
Instalação e configuração;
CRUD de exemplo;
Temas:
Vendor lock-in?
JugLeader do gojava.
Certificação: OCJP
Técnico em Informática(SENAC Aparecida)
Sistemas de Informação PUC - GO
Durante algum tempo, a principal ferramenta que permitia aos desenvolvedores integrarem
seus códigos Java como banco de dados, possibilitando amanipulação das
informações neles, era a API JDBC (Java Database Connectivity). Ela consiste de um
conjunto de classes e interfaces que provêem uma forma de acesso aos bancos de dados,
introduzidas através dos conhecidos drivers, necessários para a integração com
o banco de dados.
JDBC é o caminho?
Nesse código é possível observar diversas complexidades, como o tratamento
obrigatório da SQLException em dois momentos e a repetitiva invocação dos métodos
setInt e setString para montar o comando.
Simplifique com Hibernate
Note como o código anterior, utilizando Hibernate, é extremamente mais simples
que o escrito previamente com JDBC.
Em poucas linhas de código atingimos
o mesmo resultado. Claro que algumas coisas ainda parecem meio mágicas e outras
ainda podem ser melhoradas nesse código.
Obrigado a todos!
Full transcript