Introdução à Arquitetura Hibernate

Antes de entrar na arquitetura do Hibernate, vejamos por que o Hibernate entrou em cena e qual o objetivo que ele resolve para nós. O Hibernate é uma ferramenta ORM (Object Relational Mapping) para uma linguagem de programação java para desenvolver lógica de persistência independente de banco de dados baseada em objeto. O Hibernate fornece uma camada de abstração para recuperar e armazenar dados em um banco de dados.

Por que hibernar?

O JDBC (Java Database Connectivity) depende do banco de dados. Para ser mais específico, a gravação de consultas a serem executadas a partir do seu aplicativo usando JDBC depende de qual banco de dados você está trabalhando. Se você trabalha com MySQL ou Oracle, suas consultas serão diferentes. Portanto, se no meio de um projeto você precisar alterar seu banco de dados, isso também exigirá uma alteração de código, e é claro que não queremos isso. Visto que o hibernate usa uma linguagem de consulta Hibernate independente de banco de dados; Em resumo, o hibernate cuida da maior parte do que o desenvolvedor teve a ver com o JDBC, por exemplo. Abrindo uma conexão com o DB, fechando conexões, manipulando várias exceções.

Então, vamos entrar na arquitetura do Hibernate para entender melhor como o Hibernate tornou a persistência de dados muito mais fácil.

Arquitetura Hibernate

O conceito principal de qualquer ORM é substituir a gravação de consultas SQL específicas do banco de dados pela manipulação de objetos.

Para colocar em palavras simples,

  • você cria um POJO (objeto Java antigo simples)
  • atribua valores aos campos usando setters
  • diga ao hibernate para persistir nesses objetos

O Hibernate mapeia classes Java para tabelas de banco de dados (o que também envolve mapear os tipos de dados java para tipos de dados SQL).

Portanto, elimina a necessidade de converter os campos java em tipos de dados suportados pelo SQL. O Hibernate faz isso por você.

Ele também alivia o desenvolvedor da dor do manuseio do conjunto de resultados.

Aplicação Java

Ao desenvolver a lógica de persistência, precisamos do suporte de alguns recursos no aplicativo java. Vamos olhar para esses recursos.

O coração de qualquer aplicativo Hibernate está na sua configuração, que é feita usando,

  • Arquivo de configuração
  • Arquivo de mapeamento

Arquivo de configuração de hibernação

Definimos as propriedades que informam ao hibernar qual banco de dados ele deve interagir e qual driver JDBC usar. O Hibernate usa um arquivo de configuração para obter todas essas informações.

Embora o Hibernate seja capaz de gerar consultas ao banco de dados, podemos especificar o dialeto para ajudá-lo a gerar melhor SQL para o banco de dados necessário.

Por exemplo, a seguir estão as propriedades que você normalmente definirá em um aplicativo de inicialização por mola

Arquivo de mapeamento de hibernação

Ele contém todas as definições de mapeamento de classe para tabela. Toda ferramenta ORM precisa de um arquivo de mapeamento. Usamos as seguintes maneiras para informar ao Hibernate qual valor de um objeto deve ser armazenado em qual coluna da tabela.

  • XML
  • Anotações

Sintaxe de um arquivo de mapeamento xml na primavera,

A seguir, mostramos como anotamos a variável de instância que deve ser mapeada para uma coluna de uma linha no banco de dados.

Classe de domínio

Como sabemos, o Hibernate é conhecido por desenvolver lógica de persistência baseada em objetos. Portanto, uma classe de domínio é um POJO que é mapeado para uma tabela no banco de dados.

Configuração

Para criar uma conexão com o banco de dados, o Hibernate precisa conhecer os detalhes do banco de dados, classes e outros detalhes. Um objeto de configuração é criado uma vez quando um aplicativo é inicializado. É o principal responsável pela inicialização do Hibernate no aplicativo. Um objeto de configuração usa o arquivo de configuração e o arquivo de mapeamento de hibernação para executar as seguintes etapas:

  • Carregue esses arquivos.
  • Verifica se esses arquivos estão bem formados e válidos.
  • Cria metadados na memória desses dois arquivos.
  • Retorne um objeto que contém esses metadados.

Fábrica de Sessões

Um factory de sessão é usado para criar objetos de sessão. É criado pelo objeto de configuração. Ele fornece uma camada de abstração, para que não tenhamos que nos preocupar com a forma como o objeto da sessão é criado. É uma classe de fábrica global segura para threads para criar sessões. Usando o objeto de configuração, obtemos acesso aos dados na memória criados a partir do arquivo de configuração e mapeamento.

A partir daí, ele obtém as propriedades JDBC - nome do driver, URL da fonte de dados, nome de usuário, senha etc. Com essas propriedades, ele cria objetos de conexão, representando a conectividade com o banco de dados.

Usando essas conexões, um pool de conexões é criado. Todas as informações do objeto de configuração e do conjunto de conexões são usadas para criar e retornar um objeto de sessão. Portanto, um objeto de fábrica de sessões é um objeto pesado. Cada fábrica de sessões é configurada para funcionar com um banco de dados específico usando um dos dialetos especificados do Hibernate.

Sessão

Uma coisa a observar é que não está relacionado a uma sessão de servlet ou a uma sessão de email em java. Uma sessão é uma porta de entrada para nosso banco de dados. Ele cria uma ponte do nosso aplicativo para o banco de dados. É criado pela fábrica da sessão. Ele pega o objeto de conexão e abre uma conexão / sessão no banco de dados e permite que o aplicativo execute operações de persistência no banco de dados.

Em uma ferramenta ORM, você executa todas as operações como INSERT, DELETE e UPDATE usando semântica orientada a objetos, o que significa que você não está mais se referindo a tabelas, linhas e colunas. É o trabalho das sessões para executar todas as operações de persistência para você.

Transação

Uma transação é um objeto de curta duração que representa uma única unidade de trabalho, como salvar ou excluir um objeto em uma tabela no banco de dados. Ele abstrai o aplicativo da transação subjacente feita usando JDBC, JTA (Java Transaction API) etc.

Internamente, hiberne usando JDBC, JTA, JNDI (Java Naming and Directory Interface) para gerar consultas SQL para o banco de dados configurado.

Conclusão

Neste artigo, vimos como a arquitetura em camadas do hibernate ajuda um programador a trabalhar com um banco de dados sem precisar conhecer os detalhes da API subjacente, como JDBC, JTA e JNDI. Aprendemos como o Hibernate facilita nossa vida lidando com a maior parte do código padrão, como abrir / fechar a conexão com o banco de dados. Felizmente, isso lhe dá uma compreensão clara da arquitetura do Hibernate, que o ajudará a usar o Hibernate Framework em seus aplicativos.

Artigos recomendados

Este é um guia para a arquitetura Hibernate. Aqui discutimos a arquitetura em camadas do hibernate junto com o aplicativo Java. Você também pode consultar o seguinte artigo para saber mais -

  1. O que é o Hibernate?
  2. Estrutura Hibernate
  3. Perguntas da entrevista do Hibernate
  4. O que é o Java Hibernate?