<aside> <img src="notion://custom_emoji/6a9f75af-b090-4ac1-9370-a797e429cd85/12c39bc1-c32f-80fa-b777-007a474b0a18" alt="notion://custom_emoji/6a9f75af-b090-4ac1-9370-a797e429cd85/12c39bc1-c32f-80fa-b777-007a474b0a18" width="40px" />
DescriçãoO Hibernate é um framework de mapeamento objeto-relacional (ORM) amplamente utilizado no desenvolvimento de aplicações Java para facilitar a interação entre o sistema e o banco de dados. Ele permite mapear classes Java para tabelas do banco, reduzindo a necessidade de escrever consultas SQL manualmente e tornando o código mais organizado e produtivo. Seu funcionamento se baseia na conversão de objetos em registros no banco de dados e vice-versa, o que simplifica operações como inserção, consulta, atualização e remoção de dados. Além disso, o Hibernate oferece recursos como gerenciamento de transações, cache, carregamento lazy e suporte à linguagem HQL, que permite realizar consultas de forma orientada a objetos. Essa abordagem melhora a manutenção do sistema, reduz a complexidade do acesso a dados e aumenta a produtividade no desenvolvimento. O Hibernate é amplamente adotado em aplicações corporativas e costuma ser utilizado em conjunto com frameworks como Spring e Jakarta EE.
Procura por Srping Boot? acesse:
</aside>
Fundamentos do HibernateO que é Hibernate?O Hibernate é um framework Object-Relational Mapping (ORM) para a linguagem Java.
Usuario) nos comandos SQL correspondentes (INSERT INTO...) e vice-versa.Hibernate vs. JPAEsta é a distinção mais crucial:
@Entity, @Id) e uma API que define como um ORM deve funcionar. É o "contrato".Analogia: O JPA é a interface java.util.List, e o Hibernate é a implementação java.util.ArrayList.
Quando você usa o Spring Data JPA, ele usa a API do JPA por padrão, e o Hibernate é a implementação que o Spring Boot auto-configura para executar o trabalho.
Arquitetura e Conceitos-ChaveO Spring Boot esconde esta complexidade, mas é fundamental entendê-la.
EntityManagerFactory):
Session.EntityManager):
save, update, delete) deve ocorrer dentro de uma transação.Session (ex: session.beginTransaction()).@Transactional.Session tem o seu próprio Persistence Context.Usuario com ID 1 duas vezes, ele só vai ao banco de dados na primeira vez. Na segunda, ele retorna o objeto da memória (do L1).session.get(Usuario.class, 1L)), ele fica no L1.tx.commit()), o Hibernate compara o estado atual de todos os objetos no L1 com o estado original que eles tinham quando foram carregados.usuario.setNome("Novo Nome")), ele automaticamente gera e executa o comando UPDATE necessário.update() explícito. Você apenas carrega, altera o objeto e faz o commit.Ciclo de Vida da Entidade