헤르메스 LIFE

[Spring Boot] Application.yml 설정 - Hibernate – SQL Dialects 본문

Spring Boot Framework

[Spring Boot] Application.yml 설정 - Hibernate – SQL Dialects

헤르메스의날개 2023. 2. 26. 08:50
728x90

일반적인 yml 설정

- show-sql: true 는 System.out 으로 출력하기 때문에 효율이 좋지 않습니다.

application.yml

# Server port
server:
  port: 9090
  servlet:
    context-path: /
    
spring:
  datasource:
    url: jdbc:h2:tcp://localhost/~/test;DB_CLOSE_ON_EXIT=FALSE
    driver-class-name: org.h2.Driver                      # H2 Database
    username: sa
    password: 
    
  jpa:
    show-sql: true                       # System.out 으로 출력. logging.level.org.hibernate.SQL=debug 로 대체합니다.
    hibernate:
      # create : entity를 drop cascade 하고 다시 생성
      # update : entity가 수정되면 수정된 내용만 반영
      # create-drop,validate, none
      # 하이버네이트가 자동으로 생성해주는 DDL은 신뢰성이 떨어지기 때문에 
      # 절대로! 운영DB 환경에서 그대로 사용하면 안되고, 직접 DDL을 작성하는 것을 권장
      ddl-auto: create
    properties:                          # Additional native properties to set on the JPA provider.
      hibernate:
        #show-sql: true                  # System.out 으로 출력
        format_sql: true                 # 로그, 콘솔의 SQL을 좀 더 이쁘게 출력합니다.
        #highlight_sql: true             # SQL 출력을 ANSI escape codes를 사용하여 색을 부여합니다.
        #use_sql_comments: true          # 보다 쉬운 디버깅을 위해 SQL 내부에 /* */의 주석을 추가합니다.
        
# Logging
logging:
  level:                                 # 각 package 별로 로깅 레벨을 지정할 수 있다.
    org.hibernate.type: trace            # 콘솔차에 조건에 바인딩되는 값 및 조회 결과 출력

약간 계량한 yml 설정

- show-sql: true 는 System.out 으로 출력하기 때문에 효율이 좋지 않기 때문에 logger를 이용해서 SQL을 출력합니다.

application.yml

# Server port
server:
  port: 9090
  servlet:
    context-path: /
    
spring:
  datasource:
    url: jdbc:h2:tcp://localhost/~/test;DB_CLOSE_ON_EXIT=FALSE
    driver-class-name: org.h2.Driver                      # H2 Database
    username: sa
    password: 
    
  jpa:
    #show-sql: true                       # System.out 으로 출력. logging.level.org.hibernate.SQL=debug 로 대체합니다.
    hibernate:
      # create : entity를 drop cascade 하고 다시 생성
      # update : entity가 수정되면 수정된 내용만 반영
      # create-drop,validate, none
      # 하이버네이트가 자동으로 생성해주는 DDL은 신뢰성이 떨어지기 때문에 
      # 절대로! 운영DB 환경에서 그대로 사용하면 안되고, 직접 DDL을 작성하는 것을 권장
      ddl-auto: create
    properties:                          # Additional native properties to set on the JPA provider.
      hibernate:
        #show-sql: true                  # System.out 으로 출력
        format_sql: true                 # 로그, 콘솔의 SQL을 좀 더 이쁘게 출력합니다.
        #highlight_sql: true             # SQL 출력을 ANSI escape codes를 사용하여 색을 부여합니다.
        #use_sql_comments: true          # 보다 쉬운 디버깅을 위해 SQL 내부에 /* */의 주석을 추가합니다.
        
# Logging
logging:
  level:                                        # 각 package 별로 로깅 레벨을 지정할 수 있다.
    org.hibernate.type: trace                   # 콘솔차에 조건에 바인딩되는 값 및 조회 결과 출력
    org.hibernate.SQL: debug                    # logger를 통해 하이버네이트 실행 SQL
    org.hibernate.type.descriptor.sql: trace    # sql의 ? 값을 Parameter로 보여줌.

p6spy를 이용한 설정을 추가 했습니다.

application.yml

# Server port
server:
  port: 9090
  servlet:
    context-path: /
    encoding:
      enabled: true
      charset: UTF-8
      force: true
    session:
      timeout: 18000                              # 30분, Default 기본단위 : 초
      
  tomcat:
    uri-encoding: UTF-8                         # Spring Default : UTF-8
##############################################################
# Spring Message 처리
  messages:
    basename: messages/messages, messages/exception		# 각각 ResourceBundle 규칙을 따르는 쉼표로 구분된 기본 이름 목록
    always-use-message-format: false	# 인수가 없는 메시지도 구문 분석하여 항상 MessageFormat 규칙을 적용할지 여부
    encoding: UTF-8
    fallback-to-system-locale: true		# locale에 해당하는 file이 없을 경우 system locale을 사용 ( default : true )
    use-code-as-default-message: true	# 해당 코드를 찾을 수 없을 경우 Code 를 출력한다. ( default : false )
    cache-duration: 3                 # default는 forever
    #cache-seconds: -1					      # 로드된 자원 번들 파일 캐시 만료(초). -1로 설정하면 번들은 영원히 캐시됩니다.
    
##############################################################
# Swagger pathmatch
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

##############################################################
# Spring Message 처리
spring:
  config.activate.on-profile: local
  jpa:
    open-in-view: false
    database-platform: org.hibernate.dialect.H2Dialect
    #database-platform: org.hibernate.dialect.PostgreSQLDialect
    #show-sql: true       # System.out 으로 출력. logging.level.org.hibernate.SQL=debug 로 대체합니다. 
    hibernate:
      # create : entity를 drop cascade 하고 다시 생성
      # update : entity가 수정되면 수정된 내용만 반영
      # create-drop,validate, none
      # 하이버네이트가 자동으로 생성해주는 DDL은 신뢰성이 떨어지기 때문에 
      # 절대로! 운영DB 환경에서 그대로 사용하면 안되고, 직접 DDL을 작성하는 것을 권장
      ddl-auto: none
    #generate-ddl: true
    properties:           # Additional native properties to set on the JPA provider.
      hibernate:
        #show-sql: true                  #System.out 으로 출력
        format_sql: true                # 로그, 콘솔의 SQL을 좀 더 이쁘게 출력합니다.
        highlight_sql: true             # SQL 출력을 ANSI escape codes를 사용하여 색을 부여합니다.
        use_sql_comments: true          # 보다 쉬운 디버깅을 위해 SQL 내부에 /* */의 주석을 추가합니다.
  h2:                                   # H2-2.1.214
    console:
      enabled: true
      path: /h2-console
##############################################################
# Spring Datasource 처리
spring:
  datasource:
 #url: jdbc:h2:tcp://localhost/~/test;MVCC=TRUE # H2 1.4.200 버전부터 MVCC 옵션이 제거되었습니다.
    url: jdbc:h2:tcp://localhost/~/test;DB_CLOSE_ON_EXIT=FALSE
 #url: jdbc:p6spy:h2:tcp://localhost/~/test;DB_CLOSE_ON_EXIT=FALSE # P6Spy
    driver-class-name: org.h2.Driver # H2 Database
 #driver-class-name: com.p6spy.engine.spy.P6SpyDriver # P6Spy
    username: sa
    password:
##############################################################
# - 경로 : /src/main/resources 경로 하위
# - schema.sql : 테이블 생성 스크립트
# - data.sql : 데이터 입력 스크립트
# - 파일이름규칙 : schema-${platform}.sql , data-${platform}.sql
#   ex. schema-h2.sql , shcema-postgres.sql
#spring.datasource.initialization-mode=always # Spring Boot <v2.5.x
# DB초기화(schema.sql, data.sql) , [always : 기동 시 매번 동작, never : 기동 시 동작하지 않음]
    #schema: classpath*:initdata/${platform}/schema.sql
    #data: classpath*:initdata/${platform}/data.sql
    #schema: classpath*:initdata/h2db/schema.sql
    #data: classpath*:initdata/h2db/data.sql
    #initialization-mode: always
  sql:
    init:
      schema-locations: classpath*:initdata/${platform}/schema.sql
      data: classpath*:initdata/${platform}/data.sql
      mode: always          # Spring Boot >=v2.5.0

# Logging
logging:
  level:  # 각 package 별로 로깅 레벨을 지정할 수 있다.
    root : info
    octopus: debug
    org.springframework: WARN
    #org.hibernate.SQL: debug                    # logger를 통해 하이버네이트 실행 SQL
    #org.hibernate.type.descriptor.sql: trace    # sql의 ? 값을 Parameter로 보여줌.
  pattern:
    console: "%-5level %d{yy-MM-dd HH:mm:SSS}[%thread] %logger.%method[%line]: - %msg%n"
    file: "%-5level %d{yy-MM-dd HH:mm:SSS}[%thread] %logger.%method[%line]: - %msg%n"
  file:
    name: /Octopus/logs/app_log.log  # 로깅 파일 위치이다.
  logback:
    rollingpolicy:
      max-file-size: 10MB               #default 10M 로그 파일 하나당 최대 파일 사이즈이다.
      max-history: 31                   #default 7 로그 파일 삭제 주기이다. 7일 이후 로그는 삭제한다.
      file-name-pattern: app_log.%d{yyyy-MM-dd}.%i.gz
      
decorator.datasource.p6spy.enable-logging: true     # false : Disable p6spy
#decorator.datasource.enable: true

RDBMSDialects

DB2 org.hibernate.dialect.DB2Dialect
DB2 AS/400 org.hibernate.dialect.DB2400Dialect
DB2 OS390 org.hibernate.dialect.DB2390Dialect
PostgreSQL org.hibernate.dialect.PostgreSQLDialect
MySQL5 org.hibernate.dialect.MySQL5Dialect
MySQL5 with InnoDB org.hibernate.dialect.MySQL5InnoDBDialect
MySQL with MyISAM org.hibernate.dialect.MySQLMyISAMDialect
Oracle (any version) org.hibernate.dialect.OracleDialect
Oracle 9i org.hibernate.dialect.Oracle9iDialect
Sybase org.hibernate.dialect.SybaseASE15Dialect
Microsoft SQL Server 2000 org.hibernate.dialect.SQLServerDialect
Microsoft SQL Server 2008  org.hibernate.dialect.SQLServer2008Dialect
SAP DB org.hibernate.dialect.SAPDBDialect
Informix org.hibernate.dialect.InformixDialect
HypersonicSQL org.hibernate.dialect.HSQLDialect
H2 Database org.hibernate.dialect.H2Dialect
Ingres org.hibernate.dialect.IngresDialect
Progress org.hibernate.dialect.ProgressDialect
Mckoi SQL org.hibernate.dialect.MckoiDialect
Interbase org.hibernate.dialect.InterbaseDialect
Pointbase org.hibernate.dialect.PointbaseDialect
FrontBase org.hibernate.dialect.FrontbaseDialect
Firebird org.hibernate.dialect.FirebirdDialect

https://hermeslog.tistory.com/683

 

[Spring Boot] Common Application properties

Spring Boot의 버전에 따라 application properties 파일의 설정 경로가 약간 다르게 변했습니다. 확인 해봐야 합니다. Spring Boot 2.1.5 버전 ( https://docs.spring.io/spring-boot/docs/2.1.5.RELEASE/reference/html/common-applicati

hermeslog.tistory.com

 

728x90