dependencies {
// H2
runtimeOnly 'com.h2database:h2'
}
spring:
# Redis
data:
redis:
host: localhost
port: 6379
timeout: 6
# H2 Setting Info (H2 Console에 접속하기 위한 설정정보 입력)
h2:
console:
enabled: true # H2 Console을 사용할지 여부 (H2 Console은 H2 Database를 UI로 제공해주는 기능)
path: /h2-console # H2 Console의 Path
# Database Setting Info (Database를 H2로 사용하기 위해 H2연결 정보 입력)
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:db;MODE=MYSQL
username: sa
password:
jpa:
generate-ddl: 'true'
hibernate:
ddl-auto: create
properties:
hibernate:
# show_sql: true
format_sql: true
use_sql_comments: true # sql 과 함께 jpql 주석처리되어 콘솔창에 출력
jwt:
secret:
key: 7ZWt7ZW0OTntmZTsnbTtjIXtlZzqta3snYTrhIjrqLjshLjqs4TroZzrgpjslYTqsIDsnpDtm4zrpa3tlZzqsJzrsJzsnpDrpbzrp4zrk6TslrTqsIDsnpA=
#logging.level:
# org.hibernate.SQL: debug
# org.hibernate.type: trace 로그에 다음을 추가하기 org.hibernate.type : SQL 실행 파라미터를 로그로 남긴다.//이거대신 p6spy외부라이브러리가 더 깔끔함
# H2 Setting Info (H2 Console에 접속하기 위한 설정정보 입력)
h2:
console:
enabled: true # H2 Console을 사용할지 여부 (H2 Console은 H2 Database를 UI로 제공해주는 기능)
path: /h2-console # H2 Console의 Path
jpa:
generate-ddl: 'true'
hibernate:
ddl-auto: create
jpa.hibernate.ddl-auto
속성은 Hibernate가 데이터베이스 스키마를 생성 또는 수정하는 방식을 지정하는데 사용됩니다.
값으로 none
을 설정하면 Hibernate는 자동으로 스키마를 생성 또는 수정하지 않는다. 즉, 데이터베이스의 스키마 변경 작업을 자동으로 수행하지 않고, 애플리케이션의 모델과 데이터베이스의 스키마가 일치해야 합니다. 따라서 이 설정을 사용하면 Hibernate의 자동 DDL 기능을 비활성화할 수 있다.
ddl-auto
속성은 다른 값들로 설정할 수도 있다.
create
: Hibernate가 애플리케이션 시작 시에 데이터베이스 스키마를 삭제하고 다시 생성합니다. 이 설정은 개발 및 테스트 환경에서 유용할 수 있다. 다만, 이미 존재하는 데이터베이스에는 사용되지 않는 것이 좋다.create-drop
: Hibernate가 애플리케이션 시작 시에 데이터베이스 스키마를 생성하고, 애플리케이션 종료 시에 스키마를 삭제합니다. 주로 테스트용으로 사용되며, 애플리케이션 실행 중에 데이터베이스의 내용이 삭제됩니다.update
: Hibernate가 애플리케이션 시작 시에 데이터베이스 스키마를 검사하고 변경 사항을 자동으로 업데이트합니다. 기존 테이블은 유지되며, 변경된 엔티티나 추가된 엔티티는 데이터베이스에 반영됩니다. 다만, 기존 데이터베이스 스키마와 애플리케이션의 모델 간의 일관성을 유지하기 위해 주의해야 합니다.validate
: Hibernate가 애플리케이션 시작 시에 데이터베이스 스키마를 검사하고, 애플리케이션의 모델과 스키마가 일치하는지 확인합니다. 다만, 변경 사항을 자동으로 반영하지 않으며, 불일치가 발생한 경우 예외가 발생합니다.이 설정은 개발, 테스트, 배포 등의 환경에 따라 적절한 값을 선택하여 사용할 수 있습니다. 개발 환경에서는 none
또는 create
를 사용하는 것이 일반적이며, 운영 환경에서는 주로 none
이나 validate
를 사용하여 스키마 변경을 수동으로 관리
datasource:
driver-class-name: org.h2.Driver # Database를 H2로 사용하겠다.
url: jdbc:h2:mem:testdb # H2 접속 정보
username: sa # H2 접속 시 입력할 username 정보 (원하는 것으로 입력)
password: # H2 접속 시 입력할 password 정보 (원하는 것으로 입력)
testdb
로 지정한다.db
라는 이름으로 생성되며, MySQL 호환 모드로 동작합니다. 이 모드에서는 MySQL 문법과 동일한 문법을 사용할 수 있다. 예를 들어, 테이블 생성에 사용되는 DDL 문이 MySQL 스타일로 사용될 수 있다.참고: 모든 로그 출력은 가급적 로거를 통해 남겨야 한다.
show_sql : 옵션은 System.out 에 하이버네이트 실행 SQL을 남긴다.
org.hibernate.SQL : 옵션은 logger를 통해 하이버네이트 실행 SQL을 남긴다.
쿼리 파라미터 로그 남기기
로그에 다음을 추가하기 org.hibernate.type : SQL 실행 파라미터를 로그로 남긴다.이 옵션보단 외부 라이브러리 사용하면 더 깔끔하게 출력가능하다.
스프링 부트를 사용하면 이 라이브러리만 추가하면 된다.
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.8'
참고: 쿼리 파라미터를 로그로 남기는 외부 라이브러리는 시스템 자원을 사용하므로, 개발 단계에서는 편하 게 사용해도 된다. 하지만 운영시스템에 적용하려면 꼭 성능테스트를 하고 사용하는 것이 좋다.
쿼리 파라미터 로그 남기기 - 스프링 부트 3.0
스프링 부트 3.0 이상을 사용하면 라이브러리 버전을 1.9.0 이상을 사용해야 한다.
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'