본문 바로가기
Spring/JPA

[JPA] Hibernate 6.2.5.Final 공식 가이드 번역 (3) - Architecture

by 노력남자 2023. 6. 25.
반응형

Hibernate ORM 6.2.5.Final User Guide

 

1. 아키텍처 (Architecture)

 

1.1 개요

 

 

Hibernate는 ORM 솔루션으로써, 위의 다이어그램에서 볼 수 있듯이 Java 애플리케이션의 데이터 액세스 레이어와 관계형 데이터베이스 사이에 "중간 계층"으로 위치합니다. Java 애플리케이션은 Hibernate API를 사용하여 도메인 데이터를 로드, 저장, 쿼리 등에 활용합니다. 여기서는 Hibernate의 핵심 API를 소개합니다. 이는 간략한 소개일 뿐, 이후에 이러한 계약들에 대해 자세히 논의할 것입니다.

Jakarta Persistence 제공자로서, Hibernate는 Java Persistence API 사양을 구현하며 Jakarta Persistence 인터페이스와 Hibernate 특정 구현 사이의 연관 관계는 다음 다이어그램으로 시각화할 수 있습니다:

 

 


SessionFactory (org.hibernate.SessionFactory)


애플리케이션 도메인 모델과 데이터베이스 간의 매핑의 스레드 안전한(immutable) 표현입니다. org.hibernate.Session 인스턴스를 생성하는 팩토리 역할을 합니다. EntityManagerFactory는 SessionFactory의 Jakarta Persistence 동등 개념이며, 이 두 가지는 동일한 SessionFactory 구현으로 수렴합니다.

SessionFactory는 생성 비용이 매우 높기 때문에 특정 데이터베이스에 대해 애플리케이션은 하나의 관련된 SessionFactory만 가져야 합니다. SessionFactory는 Hibernate가 모든 Session에서 사용하는 서비스(두 번째 수준 캐시, 커넥션 풀, 트랜잭션 시스템 통합 등)를 유지합니다.

Session (org.hibernate.Session)


개념적으로 "작업 단위" (PoEAA)를 모델링하는 단일 스레드, 단기간 개체입니다. Jakarta Persistence 용어에서 Session은 EntityManager로 표현됩니다.

Hibernate Session은 JDBC java.sql.Connection을 래핑하고 org.hibernate.Transaction 인스턴스를 생성하는 팩토리로 동작합니다. 애플리케이션 도메인 모델의 일반적인 "반복 가능한 읽기" 지속성 컨텍스트(첫 번째 수준 캐시)를 유지합니다.

 

Transaction (org.hibernate.Transaction)

 

애플리케이션이 개별 물리적 트랜잭션 경계를 구분하기 위해 사용하는 단일 스레드, 단기간 개체입니다. EntityTransaction은 Jakarta Persistence 동등 개념으로, 둘 다 사용 중인 기반 트랜잭션 시스템(JDBC 또는 JTA)으로부터 애플리케이션을 격리하기 위한 추상화 API로 작동합니다.

 

원문

 

https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#architecture

반응형

댓글