Hibernate


Olá pessoal!
Este post é responsável por fechar o ciclo (2013) de Frameworks Java.

Neste ciclo, abordamos alguns dos principais Frameworks, como: Struts, JSF e Spring.
Hoje o tema será o Framework Hibernate, um ponto chave e crucial para consideravelmente todos os desenvolvedores.


O Hibernate é uma ferramenta que auxilia em operações de persistência com SGBD's, utiliza o conceito de mapeamento objeto-relacional escrito na linguagem
Java, mas também é disponível em .Net como o nome NHibernate.
Este framework facilita o mapeamento dos atributos entre uma base tradicional de dados relacionais e o modelo objeto de uma aplicação,
mediante o uso de arquivos (XML) ou anotações Java.

Vantagens:

  1. Facilita o programador no acesso ao banco de dados;
  2. Facilita a otimização com o uso de cache e fetch (estratégias de leitura dos dados)
  3. Encapsula JDBC, SQL, etc...;
  4. Diminuição do código repetitivo para realizar a persistência;
  5. Não exige contêiner;
  6. Permite o acesso via SQL;
  7. Persistência de POJO.


Desvantagens:

  1. Má performance em cenários de grande volume de atualizações;
  2. Na criação das Queries complexas, é necessário entender todos os critérios;
  3. É necessário colocar varias jar’s (bibliotecas) na aplicação, sendo que já uma vez utilizada, precisa se      parametrizar novamente.


Como funciona a arquitetura Hibernate?


Desmembrando a imagem acima:



Bom, agora vamos detalhar!

SessionFactory

SessionFactory é um threadsafe, tipo de cachê imutável composto de mapeamentos compilados para um único banco de dados.
Geralmente uma aplicação possui uma única SessionFactory e seu comportamento é controlado pelas propriedades fornecidas na configuração.

Session  

A Session é a representação de uma conversa entre a aplicação e o banco de dados.
É um Objeto single-threaded, de vida curta. A Session possui um cache obrigatório (primeiro nível) de objetos persistentes, usado para navegação nos gráficos de objetos e pesquisa de objetos pelo identificador.

Objetos persistentes e coleções

Objetos, de vida curta, single threaded contendo estado persistente e função de negócios.
Esses podem ser JavaBeans/POJOs, onde a única coisa especial sobre eles é que são associados a exatamente uma Session. Quando a Session é fechada, eles são separados e liberados para serem usados dentro de qualquer camada da aplicação.

Objetos e coleções desanexados e transientes

Objetos e coleções desanexados e transientes são instâncias de classes persistentes que ainda não estão associadas a uma Session.
Eles podem ter sido instanciados pela aplicação e não persistidos ainda ou foram instanciados por uma Session encerrada.

Transaction

Opcionalmente pode ser utilizado pela aplicação para especificar unidades atômicas
de trabalho. Abstrai o aplicativo das transações JDBC, JTA ou CORBA adjacentes.
Uma transação está associada a uma sessão e uma única sessão pode se estender por várias transações.

Connection Provider

Utilizado para obter conexões JDBC. O Connection Provider não se destina a ser exposto para a aplicação. Em vez disso, é usado internamente pelo Hibernate para obter conexões uma fábrica ou pool de conexões JDBC.

Transaction Factory  

Interface pública, é uma fábrica para realizar instâncias de Transaction. Não exposta a aplicação, mas pode ser estendida/implementada pelo programador.

Extension Interfaces

O Hibernate oferece várias opções de interfaces estendidas que você pode implementar para customizar sua camada persistente.

Bom galera, espero que tenham gostado.
Até a próxima!o/

About thallitaceleste

0 comments:

Postar um comentário