담비의 개발블로그

[DataBase]Hibernate란? 본문

DataBase

[DataBase]Hibernate란?

담비12 2024. 8. 9. 22:47
Hibernate

 

Java 기반 애플리케이션에서 객체와 관계형 데이터베이스 간의 매핑을 제공하는 ORM(Object-Relational Mapping) 프레임워크이다. JPA 구현체의 한 종류이며 JPA의 핵심들인 EntityManagerFactory, EntityManager, EntityTransaction 등을 상속받아 구현한다. Hibernate는 내부적으로 JDBC를 이용해 관계형 데이터베이스와 커넥션을 맺고 상호작용한다.


특징

1. 객체-관계 매핑 (ORM)
Hibernate는 Java 객체를 데이터베이스 테이블과 매핑한다. 이를 통해 데이터베이스의 테이블과 필드를 객체의 속성과 매핑하여 데이터베이스 조작을 객체 지향적으로 수행할 수 있다.

2. 투명한 지속성
Hibernate는 객체의 상태 변화를 자동으로 감지하고 데이터베이스와 동기한다. 이를 통해 개발자는 SQL 문을 직접 작성하지 않아도 된다.

3. HQL (Hibernate Query Language)
Hibernate는 HQL이라는 객체 지향 쿼리 언어를 제공한다. HQL은 SQL과 유사하지만, SQL과 달리 테이블이 아닌 클래스와 속성을 대상으로 한다.

4. 자동 키 생성
Hibernate는 기본 키 생성 전략을 지원한다. 이를 통해 데이터베이스의 기본 키를 자동으로 생성할 수 있다.

5. 캐싱
Hibernate는 1차 캐시와 2차 캐시를 지원한다. 1차 캐시는 세션 내에서 사용되며, 2차 캐시는 애플리케이션 전역에서 사용된다. 이를 통해 데이터베이스 접근을 최소화하고 성능을 향상시킬 수 있다.

https://dambi1224.tistory.com/63

 

[JPA]1차캐시/2차캐시

네트워크를 통해 DB에 접근하는 시간 비용은 애플리케이션 서버에서 내부 메모리에 접근하는 비용보다 훨씬 비싸다.따라서 조회한 데이터를 메모리에 캐시해서 DB접근횟수를 줄이는 것이 효율

dambi1224.tistory.com

 

6. 트랜잭션 관리
Hibernate는 JTA (Java Transaction API) 및 JDBC 트랜잭션을 지원한다. 이를 통해 애플리케이션의 트랜잭션 관리를 단순화할 수 있다.

 


구성

1. SessionFactory
SessionFactory는 Hibernate의 초기화, Session 생성 등을 담당한다. 애플리케이션 실행 시 한 번만 생성되며, 세션을 생성하는 데 사용된다.

2. Session
Session은 Hibernate와 데이터베이스 간의 연결을 나타낸다. Session을 통해 CRUD 작업을 수행할 수 있다. 각 트랜잭션마다 새로운 Session을 생성하는 것이 일반적이다.

3. Transaction
Transaction은 데이터베이스 작업의 원자성을 보장한다. 트랜잭션 내에서 여러 작업을 수행하고, 모두 성공할 경우 커밋, 실패할 경우 롤백한다.

4. Configuration
Configuration은 Hibernate 설정 정보를 담고 있으며, SessionFactory를 생성하는 데 사용된다. 주로 hibernate.cfg.xml 파일을 통해 설정한다.


 

JPA와 Hibernate랑 ORM 의 관계가 궁금해서 알아보니,

JPA는 자바에서 ORM을 위한 표준 API로, ORM 기술을 활용한다.
Hibernate는 JPA 표준을 구현한 ORM 프레임워크로, JPA의 인터페이스와 규약을 따른다.
ORM은 객체-관계 매핑 기술로, 관계형 데이터베이스의 매핑을 처리한다.

 

 

'DataBase' 카테고리의 다른 글

PostgreSQL  (0) 2025.07.05
[DB]JPA - QueryDSL란  (1) 2024.09.05
[DB]Persistence Context(영속성 컨텍스트)  (0) 2024.09.02
[DB]EntityManager(엔티티매니저)  (0) 2024.09.02
[MariaDB]member테이블 관련 알아두면 좋을 내용  (0) 2024.06.20