Files
spring-boot-examples/docs/32_jpa 설정.md
2025-04-08 19:56:24 +09:00

4.6 KiB

JPA

application.yaml 설정

spring:
  # 공통 JPA 설정
  jpa:
    hibernate:
      ddl-auto: update  # 테이블 자동 생성/업데이트 설정
    show-sql: true      # SQL 쿼리 로그 출력
    properties:
      hibernate:
        format_sql: true  # SQL 포맷팅 출력

# 개발 환경 (H2 데이터베이스)
---
spring:
  config:
    activate:
      on-profile: dev
  datasource:
    url: jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
    driver-class-name: org.h2.Driver
    username: sa
    password:
  h2:
    console:
      enabled: true  # H2 콘솔 활성화
      path: /h2-console

# 프로덕션 환경 (MariaDB 데이터베이스)
---
spring:
  config:
    activate:
      on-profile: prod
  datasource:
    url: jdbc:mariadb://localhost:3306/mydb
    driver-class-name: org.mariadb.jdbc.Driver
    username: root
    password: mypassword
  jpa:
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MariaDBDialect  # MariaDB 전용 dialect

실행 방법

  • dev 프로파일: spring.profiles.active=dev로 실행 (H2 사용)
  • prod 프로파일: spring.profiles.active=prod로 실행 (MariaDB 사용)

설정 옵션

1. 공통 JPA 설정 옵션

옵션 설명 예시 값
spring.jpa.hibernate.ddl-auto Hibernate가 데이터베이스 스키마를 생성/업데이트하는 방식 (create, update, validate, none) update
spring.jpa.show-sql 실행되는 SQL 쿼리를 콘솔에 출력할지 여부 true
spring.jpa.properties.hibernate.format_sql 출력되는 SQL을 읽기 쉽게 포맷팅할지 여부 true

2. H2 데이터베이스 설정 옵션

옵션 설명 예시 값
spring.datasource.url H2 데이터베이스 연결 URL (메모리 모드: jdbc:h2:mem:testdb) jdbc:h2:mem:testdb
spring.datasource.driver-class-name H2 JDBC 드라이버 클래스 org.h2.Driver
spring.datasource.username H2 데이터베이스 사용자 이름 (기본값: sa) sa
spring.datasource.password H2 데이터베이스 비밀번호 (기본값: 빈 문자열) ``
spring.h2.console.enabled H2 웹 콘솔 활성화 여부 (브라우저에서 데이터 확인 가능) true
spring.h2.console.path H2 콘솔의 접근 경로 /h2-console
  • 참고: DB_CLOSE_DELAY=-1은 메모리 DB가 애플리케이션 종료 시 닫히지 않도록 유지하며, DB_CLOSE_ON_EXIT=FALSE는 연결 종료 시 DB를 닫지 않도록 설정합니다.

3. MariaDB 데이터베이스 설정 옵션

옵션 설명 예시 값
spring.datasource.url MariaDB 데이터베이스 연결 URL (예: jdbc:mariadb://호스트:포트/데이터베이스명) jdbc:mariadb://localhost:3306/mydb
spring.datasource.driver-class-name MariaDB JDBC 드라이버 클래스 org.mariadb.jdbc.Driver
spring.datasource.username MariaDB 데이터베이스 사용자 이름 root
spring.datasource.password MariaDB 데이터베이스 비밀번호 mypassword
spring.jpa.properties.hibernate.dialect Hibernate가 사용할 MariaDB 전용 dialect (SQL 최적화) org.hibernate.dialect.MariaDBDialect

추가 설명

  1. H2 설정:

    • H2는 인메모리 데이터베이스로, 테스트나 로컬 개발에 적합합니다.
    • H2 콘솔(/h2-console)을 통해 브라우저에서 데이터베이스를 확인할 수 있습니다.
  2. MariaDB 설정:

    • MariaDB는 MySQL과 호환되는 오픈소스 RDBMS로, 프로덕션 환경에서 안정적으로 사용됩니다.
    • dialect 설정은 Hibernate가 MariaDB에 최적화된 SQL을 생성하도록 돕습니다.
  3. 의존성 추가:

    • pom.xml에 아래 의존성을 추가해야 합니다:
      runtimeOnly("com.h2database:h2")
      runtimeOnly("org.mariadb.jdbc:mariadb-java-client")
      implementation("org.springframework.boot:spring-boot-starter-data-jpa")
      
  4. 프로파일 사용:

    • application.yaml에서 ---로 프로파일을 구분하며, 실행 시 -Dspring.profiles.active=dev 또는 prod를 지정합니다.