
✅application.yml 설정
- yml파일을 통해 프로젝트 설정 값을 관리
- application.yml : default 프로젝트 설정 값
- application-dev.yml : 개발 환경에서의 프로젝트 설정 값
- application-prod.yml : 운영 환경에서의 프로젝트 설정 값
- application-test.yml : 테스트 환경에서의 프로젝트 설정 값
- 실행하는 profile에 따라서 yml에 default로 설정해둔 값이 오버라이드됨
✅ Spring.jpa.hibernate.ddl-auto 옵션
| create | 애플리케이션 실행 시 기존 테이블 삭제 후 테이블 새로 생성 (default) | 개발 초기 단계 사용 |
| create-drop | 애플리케이션 실행 시 테이블 생성 후 애플리케이 션 종료 시점에 테이블 drop | 개발 초기 단계 사용 |
| update | 변경된 스키마 반영 | 개발 초기 단계 사용 |
| validate | 애플리케이션 실행 시 엔티티와 테이블 정상 매핑 확인 | dev, prod 환경에서 사용 |
| none | 사용하지 않음 | dev, prod 환경에서 사용 |
✅ default_batch_fetch_size
- OneToMany 관계의 컬렉션 조회 최적화 시 사용

- default_batch_fetch_size를 적용하지 않았을 경우 order_item을 가져올 때 order의 개수만큼 order_item을 가져오는 쿼리 실행

- default_batch_fetch_size를 적용했을 경우 order_item을 가져올 때 in 쿼리로 주문 엔티티와 연관된 주문 상품 엔티티들을 쿼리 1번으로 조회
- 100 ~ 1000 권장 => DB와 애플리케이션 부하 고려
- 오라클의 경우 in 절에 들어갈 수 있는 최대 파라미터의 개수는 1000개

✅ OSIV (Open-Session-In-View)
- OSIV 설정 값 : true (default)
- View 렌더링 또는 API 요청일 경우 클라이언트 응답까지 영속성 컨텍스트 생존

- OSIV 설정 값 : false
- 트랜잭션 종료 시점 시 영속성 컨텍스트 닫침 => 컨트롤러에서 지연로딩으로 연관된 엔티티 가지고 오려고하면 에러 발생
- 영속성 컨텍스트를 오래 유지하면 DB Connection도 오래 가지고 있으므로 DB Connection이 부족할 수 있음 => 실시간 트래픽이 중요한 API 애플리케이 션에서는 false로 유지

✏️공부한 내용
- OSIV를 `false`로 하면 영속성 컨텍스트 범위가 트랜잭션으로 제한되어 DB 커넥션 유지를 짧게 가져가 커넥션 풀 고갈 위험을 줄이는 데 도움이 된다.
- `default-batch-fetch-size`는 N+1 문제를 해결하기 위해 연관된 데이터를 In 절을 사용하여 배치로 한 번에 가져와 쿼리 수를 줄여 성능을 높여준다
'Project' 카테고리의 다른 글
| [Side Project] 에러처리 (0) | 2025.05.20 |
|---|---|
| [Side Project] CORS 설정 & Preflight (0) | 2025.05.18 |
| [Side Project] Health Check API - 서버 상태 체크 (1) | 2025.05.17 |