본문 바로가기

Spring/Spring JPA

[JPA] Spring JPA 관련 yml 설정의 주요 항목

1. generate-ddl

설명:

  • 데이터베이스 스키마를 애플리케이션의 엔티티(Entity) 모델을 기반으로 자동 생성할지 여부를 설정합니다.
  • DDL은 테이블 생성 및 수정과 같은 데이터베이스 구조 정의를 나타냅니다.

값:

  • true: 엔티티를 기반으로 데이터베이스 스키마를 자동 생성합니다.
  • false: 스키마를 생성하지 않습니다. (기본값)

주의:

  • 이 설정은 Hibernate 또는 JPA 구현체에 따라 동작하며, 데이터베이스에 직접 영향을 미칩니다.
  • 프로덕션 환경에서는 일반적으로 false로 설정합니다.

2. hibernate.ddl-auto

설명:

  • Hibernate가 데이터베이스 스키마를 어떻게 관리할지 설정합니다.

주요 값:

  • none: 스키마 자동 생성 비활성화.
  • create: 애플리케이션 시작 시 기존 스키마를 삭제하고 새로 생성.
  • create-drop: 애플리케이션 시작 시 스키마를 생성하고 종료 시 삭제.
  • update: 기존 스키마를 유지하면서 변경된 엔티티 기반으로 업데이트.
  • validate: 데이터베이스 스키마를 확인만 하고 변경하지 않음.
spring:
  jpa:
    hibernate:
      ddl-auto: update

3. show-sql

설명:

  • Hibernate가 실행하는 SQL 쿼리를 콘솔에 출력할지 설정합니다.

값:

  • true: 실행되는 SQL 쿼리를 출력.
  • false: SQL 쿼리를 출력하지 않음. (기본값)
spring:
  jpa:
    show-sql: true

4. properties.hibernate.format_sql

설명:

  • SQL 쿼리를 가독성 있게 포맷하여 출력할지 설정합니다.

값:

  • true: SQL 쿼리를 읽기 쉽게 포맷.
  • false: SQL 쿼리를 포맷하지 않음. (기본값)
spring:
  jpa:
    properties:
      hibernate:
        format_sql: true

5. properties.hibernate.dialect

설명:

  • Hibernate가 사용할 데이터베이스 방언(Dialect)을 설정합니다.
  • 방언은 특정 데이터베이스의 SQL 구문 및 기능을 지원하기 위한 설정입니다.
spring:
  jpa:
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQLDialect

6. open-in-view

설명:

  • Spring의 Open Session in View 기능을 활성화하거나 비활성화합니다.
  • 이 설정은 기본적으로 활성화되어 있으며, View 레이어에서도 Lazy-Loading을 지원합니다.

값:

  • true: View 레이어에서 Lazy-Loading을 허용.
  • false: View 레이어에서 Lazy-Loading을 비활성화.
spring:
  jpa:
    open-in-view: false

7. database-platform

설명:

  • hibernate.dialect와 비슷하지만 더 추상적으로 데이터베이스 플랫폼을 지정합니다.
spring:
  jpa:
    database-platform: org.hibernate.dialect.MySQL8Dialect

 

8. spring.jpa.database

설명:

  • 사용 중인 데이터베이스 유형을 Spring에 명시적으로 알려줍니다.

주요 값:

  • default: 기본값. 자동으로 감지.
  • mysql: MySQL.
  • postgresql: PostgreSQL.
  • h2: H2 Database 등.
spring:
  jpa:
    database: mysql

9. spring.datasource.*와 연계

generate-ddl과 같은 JPA 설정은 데이터 소스 설정과 함께 작동해야 합니다. 주로 spring.datasource.url, username, password와 함께 사용합니다.

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: password
  jpa:
    hibernate:
      ddl-auto: update
    properties:
      hibernate:
        show_sql: true
        format_sql: true

 

정리)

generate-ddl: true는 엔티티를 기반으로 데이터베이스 테이블을 생성하는 기능을 활성화합니다. 이 외에도 다양한 설정을 통해 Hibernate와 JPA의 동작을 세부적으로 제어할 수 있습니다. 설정값은 환경(로컬 개발/프로덕션)에 따라 다르게 적용하는 것이 좋습니다.