[Spring Boot] Spring Data JPA

조애옹·2025년 6월 17일

🔍 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  # DDL 자동 생성 전략
옵션설명추천 사용 시점
create기존 테이블을 모두 삭제하고 새로 생성개발 초기, 테스트 환경
create-dropcreate와 같지만 종료 시 테이블 삭제테스트 전용
update기존 테이블을 유지하며, 엔티티 변경사항이 있으면 구조 수정개발 환경
validate테이블 변경 없이 엔티티와 DB의 매핑 일치 여부만 검증운영 환경
noneHibernate가 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 레벨로 출력함.
profile
아자잣

0개의 댓글