ORM(Object Relational Mapping)이란 ?
: 객체 지향 프로그래밍 언어에서 데이터베이스 테이블을 객체로 매핑하여 SQL을 직접 작성하지 않고 데이터를 조작할 수 있도록 해주는 기술
즉, 관계형 데이터베이스와 객체 지향 프로그래밍 사이의 변환 기법으로 객체와 테이블의 구조를 자동으로 연결해 줌
ORM의 동작 원리
: 객체(Entity) ↔︎ 테이블 : 클래스와 테이블이 매핑되고, 클래스의 속성은 테이블의 컬럼에 대응
Hibernate 동작 원리
: Hibernate는 JPA(Java Persistence API) 표준을 구현한 대표적인 ORM 프레임워크로, 객체와 관계형 데이터베이스 간 매핑을 처리하고 SQL 실행을 자동화하는 역할을 함
JPA와 Hibernate의 관계
: JPA는 표준, Hibernate는 구현체
- 개발자는 JPA 인터페이스를 사용하고, 실제 동작은 Hibernate가 수행함
Hibernate의 주요 기능
- 1차 캐시 : 동일 트랜잭션 내에서 한 번 조회한 엔티티는 DB에 다시 조회하지 않고 메모리에서 가져옴
- Dirty Checking : 엔티티 객체의 값이 변경되면 Hibernate가 자동으로 변경 내용을 감지하고 UPDATE SQL 을 실행함
- 쿼리 자동 생성 : save(), findById() 등 메서드 호출 시 Hibernate가 SQL을 직접 작성해 실행함
지연 로딩(Lazy Loading) vs 즉시 로딩(Eager Loading)
- 지연 로딩 : 기본 fetch 전략(컬렉션 연관관계)이며 N+1 문제 발생 가능 → JOIN FETCH로 해결 가능
@OneToMany(fetch = FetchType.LAZY)
private List<Order> orders;
- 즉시 로딩 : 항상 JOIN 쿼리 실행, 불필요한 데이터 로드 주의
@OneToMany(fetch = FetchType.EAGER)
private List<Order> orders;
Hibernate 설정 옵션
- spring.jpa.hibernate.ddl-auto : 테이블 생성 전략 (create, update, validate 등)
- spring.jpa.show-sql : 실행되는 SQL 로그 출력
- spring.jpa.properties.hibernate.format_sql : SQL을 보기 좋게 출력
| 값 | 설명 |
| create | 기존 테이블 삭제 후 새로 생성 |
| update | 변경된 엔티티만 반영 |
| validate | 엔티티와 테이블 구조 비교, 불일치 시 예외 발생 |
| none | 아무 작업도 하지 않음 |
'Spring > 백엔드 기초' 카테고리의 다른 글
| [백엔드 기초] Filter, Spring Security (0) | 2025.10.24 |
|---|---|
| [백엔드 기초] 쿠키를 활용한 인증 인가 개념 실습 (0) | 2025.10.23 |
| [백엔드 기초] 백엔드 기초 개념정리 (0) | 2025.10.22 |
| [Spring] 스프링을 위한 기본 개념 복습 및 학습 -2 (0) | 2025.10.15 |
| [Spring] 스프링을 위한 기본 개념 복습 및 학습 (0) | 2025.10.14 |