# MariaDB setting
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3306/sample
spring.datasource.username=root
spring.datasource.password=!123456
# Hibernate setting
spring.jpa.database-platform=org.hibernate.dialect.MariaDBDialect
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true
spring.jpa.database-platform=org.hibernate.dialect.MariaDBDialect
- Hibernate에서 사용할 SQL 방언(Dialect)을 지정합니다.
- MariaDBDialect는 MariaDB 데이터베이스와 호환되는 SQL을 생성하기 위한 Hibernate 방언입니다.
- MySQL과 유사하지만 MariaDB 고유의 최적화나 기능을 지원하는 쿼리를 생성합니다.
- 다른 방언 예시:
- MySQL 8.x: org.hibernate.dialect.MySQL8Dialect
- PostgreSQL: org.hibernate.dialect.PostgreSQLDialect
- Oracle 12c: org.hibernate.dialect.Oracle12cDialect
spring.jpa.hibernate.ddl-auto=create
- 애플리케이션 시작 시 Hibernate가 데이터베이스 테이블과 엔티티 간의 매핑을 어떻게 처리할지를 결정합니다.
- spring.jpa.hibernate.ddl-auto:
- Hibernate가 테이블 스키마를 처리하는 방식.
- 주요 옵션:
- none: 아무 작업도 하지 않음. 운영 환경에서 사용 권장.
- validate: 스키마를 검증하지만 변경하지 않음.
- update: 기존 스키마를 유지하며 필요한 경우 업데이트.
- create: 기존 테이블 삭제 후 새로 생성.
- create-drop: create처럼 테이블 생성 후, 애플리케이션 종료 시 삭제.
- 개발/운영 환경별 추천 값:
- 개발 환경: update 또는 create
- 운영 환경: validate 또는 none
- 주의: 운영 환경에서 사용 시 기존 데이터가 모두 삭제되므로 위험합니다.
설정 값 | 설명 | 적용 시점 및 환경 |
none | Hibernate가 DDL 작업을 하지 않음. | - 운영 환경에서 추천. - 스키마는 수동으로 관리되며, Hibernate가 변경하지 않음. |
validate | 엔티티와 데이터베이스 테이블의 스키마 일치 여부를 검증 (변경은 하지 않음). | - 운영 환경에서 권장. - 애플리케이션 배포 전 스키마가 엔티티와 일치하는지 확인 가능. |
update | 기존 스키마를 유지하면서 필요한 경우 변경. | - 개발 환경에서 유용. - 반복적으로 스키마를 초기화할 필요가 없는 경우. |
create | 기존 스키마를 삭제하고 새로 생성. | - 초기 개발 환경에서 추천. - 데이터가 없어도 되는 경우. |
create-drop | 애플리케이션 종료 시 생성된 테이블을 삭제. | - 테스트 환경에서 유용. - 데이터베이스 상태를 매번 초기화해야 할 때. |
- 운영 환경에서는 데이터 손실 위험이 있는 create, create-drop 사용을 지양해야 합니다.
- 대신 스키마를 명확히 검증할 수 있는 validate나 변경을 하지 않는 none을 사용하는 것이 일반적입니다.
spring.jpa.show-sql=true
- 실행된 SQL 쿼리를 애플리케이션 로그에 출력합니다.
- SQL 쿼리 디버깅과 성능 분석에 유용합니다.
- 더 나아가 바인딩 파라미터까지 출력하려면 추가 설정이 필요합니다:
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
추가적으로 많이 쓰이는 설정
SQL 출력 및 포맷
- spring.jpa.show-sql: SQL 쿼리를 출력.
- spring.jpa.properties.hibernate.format_sql=true: 출력되는 SQL을 포맷팅하여 보기 좋게 만듦.
- logging.level.org.hibernate.SQL=DEBUG: SQL 로그 레벨 설정.
- logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE: 쿼리 바인딩 값 출력.
'Spring' 카테고리의 다른 글
JPA - @Column 데이터베이스 컬럼 매핑 (0) | 2025.01.14 |
---|---|
JPA의 @GeneratedValue 전략 (0) | 2025.01.14 |
JPA(Java Persistence API) 개요 (0) | 2025.01.13 |
Persistence Layer(영속성 계층) (0) | 2025.01.11 |
Transaction(트랜잭션)과 TCL(Transaction Control Language) (0) | 2025.01.11 |