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:
Hibernate | JDBC |
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 -
- Estruturas em Java
- O que são as estruturas de automação de teste?
- Estrutura HADOOP
- .Net Core vs .Net Framework
- Gráficos 2D em Java
- Jogue vs Joga | As 5 principais diferenças que você deve saber