Estrutura de hibernação - Guia completo do Hibernate Framework

Índice:

Anonim

O que é o Hibernate Framework?

O Hibernate é uma estrutura de persistência java baseada em mapeamento objeto-relacional (ORM) de código-fonte aberto. É uma ferramenta de mapeamento ORM em java. O Hibernate foi desenvolvido com a necessidade de reduzir a complexidade ao conectar um banco de dados relacional por meio de java. A estrutura do Hibernate foi projetada para mapear objetos java para implementar programação orientada a objetos no banco de dados relacional. É assim que a hibernação se conecta ao banco de dados relacional para executar consultas:

  • O Hibernate se conecta diretamente ao banco de dados especificado e usa a linguagem de consulta do hibernate (HQL) para executar consultas e mapear os resultados da consulta para objetos java.
  • O Hibernate usa propriedades definidas no arquivo XML de configuração do Hibernate para mapear os resultados da consulta para objetos java.
  • A conexão com o banco de dados é criada usando uma sessão que ajuda a salvar e buscar o objeto java persistente.
  • A sessão é criada usando a interface de fábrica da sessão. Em um caso ideal, deve haver apenas uma fábrica de sessões por banco de dados.

Comparação de Hibernate e JDBC

Aqui está uma tabela de comparação mostrando uma comparação entre o hibernate e o JDBC:

HibernateJDBC
O Hibernate contém classes concretas que fornecem lógica padrão.O JDBC fornece apenas interfaces e classes abstratas.
Todas as exceções geradas pela hibernação são desmarcadas.Todas as classes no JDBC lançam exceções verificadas.
Ele não requer mais gerenciamento de recursos e o faz internamente.Requer mais gerenciamento de recursos, como abertura e fechamento de recursos.
Armazena objetos java diretamente.Não pode armazenar objetos diretamente.
Oferece suporte a consultas independentes do banco de dados.Oferece suporte a consultas específicas do banco de dados.
Suporta cache.Não suporta cache.
Suporte carregamento lento.Não suporta carregamento lento.

Arquitetura de estrutura do Hibernate

O Hibernate segue a arquitetura em camadas e possui as seguintes camadas:

  • Camada de aplicativo Java
  • Camada de hibernação
  • Camada da API de back-end
  • Camada de banco de dados

A camada de hibernação contém os seguintes componentes, que são os seguintes:

1. Objeto de configuração do Hibernate

Este é o primeiro objeto que é necessário criar para estabelecer a conexão com o banco de dados usando o hibernate. Idealmente, ele deve ser criado uma vez, durante a inicialização do aplicativo. O objeto de configuração fornece o seguinte:

  • Conexão com o banco de dados: A conexão com o banco de dados é estabelecida usando um ou mais arquivos de configuração. Os arquivos são hibernados .properties e hibernate.cfg.xml.
  • Mapeamento: Isso cria um mapeamento entre classes java e tabelas de banco de dados relacional.

2. Fábrica de Sessões

O objeto de configuração criado na etapa 1 é usado para criar um objeto de factory de sessão que prepara a configuração de hibernação usando o arquivo de configuração fornecido e abre caminho para a criação do objeto de sessão. Como a fábrica de sessões é um objeto pesado, geralmente é criada uma vez durante a fase inicial do aplicativo. É necessário um objeto de fábrica de várias sessões, caso seja necessário estabelecer conexões com vários bancos de dados. Além disso, o factory de sessão é um objeto seguro para threads.

3. Sessão

O objeto de sessão estabelece uma conexão física com o banco de dados. É um objeto leve e deve ser criado sempre que a interação com o banco de dados for necessária. Se um objeto precisar ser persistido ou precisar ser recuperado, isso só poderá ser feito usando o objeto de sessão. O objeto da sessão deve ser fechado assim que a operação necessária for concluída porque eles não são seguros para threads.

4. Transação

É um objeto opcional e representa uma unidade de trabalho realizada com o banco de dados. Um objeto de transação garante que todas as operações devem ser executadas ou nenhuma delas deve ser executada. É um objeto de thread único e de vida curta.

5. Objeto de Consulta

Esse objeto usa a linguagem de consulta estruturada (SQL) ou a Hibernate Query Language (HQL) para buscar dados do banco de dados e instanciar objetos. Um objeto de consulta pode ser usado para limitar a saída retornada da consulta, vincular parâmetros de consulta e executar a consulta.

Consultas

Aqui, executaremos algumas consultas que tornarão as coisas mais claras. Vamos considerar um funcionário da entidade com a classe estruturada como:

Código:

Package com.edubca.hibernatetest;
@Entity
@Table(name = "EMPLOYEE")
public class Employee implements Serializable
(
private static final long serialVersionUID = -1798070786993123455L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "empID")
private Integer empID;
@Column(name = "NAME")
private String empName;
@Column(name = "SALARY")
private Integer salary;
//Getters and setters
)

O Hibernate requer um arquivo XML chamado hibernate.cfg.xml que se parece com:

Código:


com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/hibernatetest
edubca
edubcauser
org.hibernate.dialect.MySQLDialect
create

Abaixo está o código para mostrar como a inserção e a recuperação ocorrem no banco de dados usando o hibernate:

Código:

//Create Configuration object
Configuration con=new AnnotationConfiguration().configure(new File("hibernate.cgf.xml"));
// create session factory using configuration
SessionFactory fact=conf.buildSessionFactory();
//get session from session factory
Session session=fact.openSession();
//Instantiate and populate Employee entity object
Employee emp=new Employee();
emp.setempID(1);
emp.setempName(“Yash”);
emp.setSalary(40000);
Employee emp1=new Employee();
emp1.setempID(2);
emp1.setempName(“Aman”);
emp1.setSalary(42000);
//persist emp object
session.save(emp);
//persist emp1 object
session.save(emp1);
//retrieve data from database
Query query=session.createQuery(“from Employee”);
List list= query.list();
For(Employee e : list)(
System.out.println(“Employee with ID ” + e.getempID() + “ has Name ” + e.getempName() + “ has salary ” + e.getsalary());
)

Resultado:

Um funcionário com o ID 1 tem o Nome Yash e tem um salário de 40000.
Um funcionário com o ID 2 tem o Nome Aman e tem um salário de 42000.

Conclusão

Neste artigo, abordamos o hibernate em detalhes, sobre sua arquitetura, comparação com exemplos de código e JDBC. Também observamos que o hibernate fornece uma maneira simples e eficiente de interagir com o banco de dados.

Artigos recomendados

Este é um guia para o Hibernate Framework. Aqui discutimos a arquitetura, os componentes e a comparação do hibernate e JDBC com exemplos de código. Você também pode consultar os seguintes artigos para saber mais -

  1. Estruturas em Java
  2. O que são as estruturas de automação de teste?
  3. Estrutura HADOOP
  4. .Net Core vs .Net Framework
  5. Gráficos 2D em Java
  6. Jogue vs Joga | As 5 principais diferenças que você deve saber