Passo a Passo para o mundo de JavaServer Faces – Parte 02

 

Por: Eduardo Bregaida

Hibernate e Java Persistence API – JPA

Hibernate

É um framework de mapeamento objeto relacional mais utilizado no universo Java, na versão do Hibernate 2, era muito trabalhoso criar seus mapeamentos, um XML enorme, mas com a vinda do Java 5 e as anotações, tudo foi simplificado, na versão do Hibernate 3, já utiliza estes recursos, e não é compatível com sua versão anterior, assim se tornando mais poderoso, pois, mantendo compatibilidade, o framework não poderia crescer muito sem ”quebrar” elementos de sua versão anterior.

Basicamente permite fazer a persistência de objetos em banco de dados relacionais de modo transparente e para qualquer aplicação Java.

Sendo assim, ao invés de ter uma perca de tempo escrevendo códigos SQL e mesclando em seu código, mapear resultados de suas consultas para objetos, o desenvolvedor só se preocupará com seus objetos.

Com o Hibernate podemos:

  • Criar a tabela de sua base de dados;
  • Criar o objeto em que seu estado irá ser persistido;
  • Relacionar por anotações os relacionamentos e propriedades do objeto aos campos de sua tabela;
  • Criar a classe DAO que persistirá seu objeto
  •  Criar um simples arquivo para que o Hibernate conecte a seu banco de dados.

O JPA

O JPA é um framework mantido pelo JCP, sendo um de seus criadores o mesmo da especificação do Hibernate, este framework é utilizado na camada de persistência, é uma “casca”, logo abaixo deste framework pode se encontrar seu framework de persistência preferido no nosso caso o Hibernate, mas poderia ser o Top Link por exemplo.

A figura 2 representa as camadas, sendo o JPA, logo abaixo o Hibernate, encapsulado o JDBC e finalmente a Base de Dados.

pb_30_10_09_pic06.JPG
Figura 2 – www.caelum.com.br

JPA nasceu no JCP para ser criado uma especificação de persistencia já que o JDP não foi um projeto de grande sucesso e os Entity Beans do EJB eram extremamente difíceis de lidar, foi especificado na JSR 220,  standalone ou gerenciado pelo servidor, a não ser que o desenvolvedor opte o JPA não necessita de XML para criar os mapeamentos.

Gerenciador de estados:

  •      Transiente, no qual o objeto precisa ser persistido;
  •      Detached, no qual o objeto deverá ter o estado de merged para persistir;
  •      Managed, no qual o objeto sempre será persistido.