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:
- Facilita o programador no acesso ao banco de dados;
- Facilita a otimização com o uso de cache e fetch (estratégias de leitura dos dados)
- Encapsula JDBC, SQL, etc...;
- Diminuição do código repetitivo para realizar a persistência;
- Não exige contêiner;
- Permite o acesso via SQL;
- Persistência de POJO.
Desvantagens:
- Má performance em cenários de grande volume de atualizações;
- Na criação das Queries complexas, é necessário entender todos os critérios;
- É 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/
0 comments:
Postar um comentário