🔍 JPA(Java Persistence API)란?
- 자바에서 객체(Object)를 데이터베이스의 테이블(Table)과 매핑하기 위한 표준 명세
- 즉, 자바 클래스만 잘 만들어도 DB에 자동으로 연결됨
- SQL을 직접 작성하지 않아도 됨
🔍 Spring Data JPA란?
- 복잡한 JPA 설정을 자동화하고, 반복적인 DB 작업을 쉽게 처리해주는 도구
- 인터페이스 하나만 작성하면 자동으로 CRUD 기능이 만들어짐
- DB 종류에 관계없이 같은 코드로 처리 가능
- 트랜잭션, 페이징, 정렬 등의 기능도 지원
- 테스트하기 쉬운 구조 제공
✅ Spring Data JPA에서 DB까지의 흐름

✅ Spring Data JPA 설정 방법
builde.gradle.kts
dependencies {
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
runtimeOnly("com.mysql:mysql-connector-j")
}
application.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: myuser
password: mypass
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
| 옵션 | 설명 | 추천 사용 시점 |
|---|
create | 기존 테이블을 모두 삭제하고 새로 생성 | 개발 초기, 테스트 환경 |
create-drop | create와 같지만 종료 시 테이블 삭제 | 테스트 전용 |
update | 기존 테이블을 유지하며, 엔티티 변경사항이 있으면 구조 수정 | 개발 환경 |
validate | 테이블 변경 없이 엔티티와 DB의 매핑 일치 여부만 검증 | 운영 환경 |
none | Hibernate가 DDL을 전혀 생성하지 않음 | DBA가 직접 관리하는 경우 |
✅ 유용한 application.yml 설정
spring:
output:
ansi:
enabled: always
output.ansi.enabled: alwats: 콘솔에 컬러 출력이 되어 가독성이 좋아짐
spring:
jpa:
show-sql: true
properties:
hibernate:
format_sql: true
highlight_sql: true
use_sql_comments: true
show-sql: true: JPA가 생성하는 SQL 쿼리를 콘솔에 출력, 디버깅에 유용
properties.hibernate.format_sql: true: SQL을 포맷팅해서 출력
properties.hibernate.highlight_sql: true: SQL 출력에 컬러를 입혀서 구문, 키워드 등을 강조
properties.hibernate.use_sql_comments: true: JPA 쿼리의 코멘트를 SQL에 추가
logging:
level:
org.hibernate.orm.jdbc.bind: TRACE
org.hibernate.orm.jdbc.extract: TRACE
org.springframework.transaction.interceptor: TRACE
org.hibernate.orm.jdbc.bind: TRACE: SQL 파라미터 바인딩 값을 출력
org.hibernate.orm.jdbc.extract: TRACE: DB에서 값을 추출할 때 로깅을 TRACE 레벨로 출력, 쿼리 결과를 어떻게 읽는지 추적 가능
org.springframework.transaction.interceptor: TRACE: 트랜잭션 시작/커밋/롤백 등의 상세 로그를 TRACE 레벨로 출력함.