Hibernate - Arquitetura

O Hibernate tem uma arquitetura em camadas que ajuda o usuário a operar sem ter que conhecer as APIs subjacentes. O Hibernate faz uso do banco de dados e dados de configuração para fornecer serviços de persistência (e objetos persistentes) para a aplicação.

A seguir está uma visão de alto nível da Arquitetura do Aplicativo Hibernate.

A seguir está uma visão detalhada da Arquitetura do Aplicativo Hibernate com suas classes principais importantes.

O Hibernate usa várias APIs Java existentes, como JDBC, Java Transaction API (JTA) e Java Naming and Directory Interface (JNDI). JDBC fornece um nível rudimentar de abstração de funcionalidade comum a bancos de dados relacionais, permitindo que quase qualquer banco de dados com um driver JDBC seja suportado pelo Hibernate. JNDI e JTA permitem que o Hibernate seja integrado aos servidores de aplicativos J2EE.

A seção a seguir fornece uma breve descrição de cada um dos objetos de classe envolvidos na Arquitetura do Aplicativo Hibernate.

Objeto de Configuração

O objeto Configuration é o primeiro objeto Hibernate que você cria em qualquer aplicativo Hibernate. Geralmente é criado apenas uma vez durante a inicialização do aplicativo. Ele representa uma configuração ou arquivo de propriedades requerido pelo Hibernate.

O objeto de configuração fornece dois componentes principais -

  • Database Connection- Isso é tratado através de um ou mais arquivos de configuração suportados pelo Hibernate. Esses arquivos sãohibernate.properties e hibernate.cfg.xml.

  • Class Mapping Setup - Este componente cria a conexão entre as classes Java e as tabelas do banco de dados.

Objeto SessionFactory

O objeto de configuração é usado para criar um objeto SessionFactory que por sua vez configura o Hibernate para a aplicação usando o arquivo de configuração fornecido e permite que um objeto de Sessão seja instanciado. A SessionFactory é um objeto thread-safe e usado por todas as threads de um aplicativo.

A SessionFactory é um objeto pesado; geralmente é criado durante a inicialização do aplicativo e mantido para uso posterior. Você precisaria de um objeto SessionFactory por banco de dados usando um arquivo de configuração separado. Portanto, se você estiver usando vários bancos de dados, terá que criar vários objetos SessionFactory.

Objeto de Sessão

Uma sessão é usada para obter uma conexão física com um banco de dados. O objeto Session é leve e projetado para ser instanciado toda vez que uma interação for necessária com o banco de dados. Objetos persistentes são salvos e recuperados por meio de um objeto de Sessão.

Os objetos de sessão não devem ser mantidos abertos por muito tempo porque eles geralmente não são seguros para thread e devem ser criados e destruídos conforme necessário.

Objeto de transação

Uma transação representa uma unidade de trabalho com o banco de dados e a maior parte do RDBMS suporta a funcionalidade de transação. As transações no Hibernate são tratadas por um gerenciador de transações e transações subjacentes (de JDBC ou JTA).

Este é um objeto opcional e os aplicativos Hibernate podem optar por não usar esta interface, em vez de gerenciar as transações em seu próprio código de aplicativo.

Objeto de Consulta

Os objetos de consulta usam a string SQL ou Hibernate Query Language (HQL) para recuperar dados do banco de dados e criar objetos. Uma instância Query é usada para vincular parâmetros de consulta, limitar o número de resultados retornados pela consulta e, finalmente, executar a consulta.

Objeto de Critérios

Objetos de critérios são usados ​​para criar e executar consultas de critérios orientados a objetos para recuperar objetos.