개발/JPA

[JPA] JPA 관련 application.properties 설정

Jindory 2022. 4. 27. 18:29
반응형

안녕하세요. 개발자 Jindory입니다.

오늘은 JPA 셋팅할때 application.properties에 설정하는 내용에 대해서 알아보는 글을 작성해보고자 합니다.

 

# 글을 작성하는 이유

JPA 설정시 application.properties에 어떤 내용을 설정하며, 각각의 설정이 어떤것을 의미하는지 파악하고자 글을 작성합니다.


application.properties

# Database

# MySQL 설정
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# DB Source URL
spring.datasource.url=jdbc:mysql://<URL>:<PORT>/<DBNAME>?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul
# DB username
spring.datasource.username=<DBID>
# DB password
spring.datasource.password=<DBPW>
# DB Connection Test
spring.datasource.connection-test-query=SELECT 1
  1. spring.datasource.driver-class-name
  2. spring.datasoruce.jdbc-url(연결할 데이터베이스 주소를 설정)
  3. spring.datasource.username/password(연결할 데이터베이스 ID와 PW 설정)
  4. spring.datasource.connection-test-query(데이터베이스가 정상적으로 연결 되었는지 확인하는 테스트 쿼리)

# JPA

# JPA Setting(MySQL)
spring.jpa.database = mysql		
spring.jpa.database-platform = org.hibernate.dialect.MySQL5InnoDBDialecct
spring.jpa.generate-ddl = false
spring.jpa.hibernate.ddl-auto = none	
spring.jpa.hibernate.use-new-id-generator-mappings = false
spring.jpa.properties.hibernate.format_sql = true
spring.jpa.show-sql = true
  1. spring.jpa.database(데이터베이스 설정) : 사용할 데이터베이스 종류를 입력한다.
    1. MySQL : mysql
    2. Oracle : oracle
    3. H2 : h2
  2. spring.jpa.database-platform(쿼리문 방언 설정) : SQL문을 생성할 데이터베이스의 Dialect를 설정한다.
    1. Spring Data JPA는 기본적으로 hibernate라는 JPA 구현체를 사용한다.
    2. Hibernate는 내부적으로 지정되는 DB에 맞게 SQL 문을 생성하는 Dialect가 존재한다.
    3. Dialect는 Hibernate가 다양한 데이터베이스를 처리하기 위해 각 데이터베이스에 맞는 SQL 문법을 생성하기 위해 설정한다.
    4. 설정값(참고링크)
      1. MySQL : MySQL5Dialect, MySQL5InnoDBDialect
      2. Oracle : Oracle10gDialect, Oracle12cDialect
      3. H2 : H2Dialect
  3. spring.generate.ddl(DDL 고유기능 사용 유무)
    JPA의 엔티티 연관관계를 바탕으로 테이블 생성과 같은 스크립트(Data Definition Language:DDL)를 자동으로 실행하도록 한다.
  4. spring.hibernate.ddl-auto(데이터베이스 생성,업데이트,삭제,비활성에 대한 설정)
    1. create : 테이블이 없을 경우, 테이블 생성
    2. create-drop : 테스트 실행시 mock Data를 위해 table을 생성하고 테스트 종료 후 생성한 테이블을 Drop
    3. validate : application 실행시 @Entity 들과 이미 존재하는 테이블(Schema)가 정상적으로 매핑되었는지 판단하여 만약 @Entity와 테이블이 제대로 맵핑 되지 않으면, appliction이 실행되지 않는다.
    4. update : 이미 테이블이 존재하는 상황에서 @Entity속성이 추가될 경우, 기존 데이터에는 변환 없이 새로운 Column을 추가한다.
    5. none : 아무 설정도 적용하지 않는다.
  5. spring.hibernate.use-new-id.generator-mappings(Hibernate 자동키 생성 전략)
    1. AUTO(default) : JPA 구현체가 자동으로 생성 전략을 결정한다.
    2. IDENTITY : 기본키 생성을 데이터베이스에게 위임한다. MySQL의 경우 AUTO_INCREMENT를 사용하여 기본키 생성
    3. SEQUENCE : 데이터베이스의 특별한 오브젝트 시퀀스를 사용하여 기본키를 생성한다.
    4. TABLE : 데이터베이스에 키 생성 전용 테이블을 만들고 이를 사용하여 기본키를 생성한다.
  6. spring.jpa.properties.hibernate.format_sql(SQL의 Query 가독성을 높게 해주는 옵션)
  7. spring.jpa.properties.hibernate.use_sql_comments(주석 추가)
  8. spring.jpa.show-sql(쿼리문 보이도록 설정)

# Logging

# hibernate logging
logging.level.org.hibernate = info
  1. hibernate logging 레벨을 info 레벨로 설정합니다.
    1. loggin level은 아래와 같은 단계로 있습니다
      1. ALL : 모든 레벨을 포함하여 log를 남긴다.
      2. TRACE : 추적 레빌을 debug보다 좀더 상세한 정보를 나타낸다.
      3. DEBUG : 프로그램을 디버깅하기 위한 정보를 log로 남긴다.
      4. INFO : 상태변경과 같은 정보성 메시지를 log를 남긴다.
      5. WARN : 처리 가능한 문제, 향후 시스템 에러의 원인이 될 수 있는 경고성 메시지를 log로 남긴다.
      6. ERROR : 요청을 처리하는 중 문제가 발생한 경우 log를 남긴다.
      7. FATAL : 아주 심각한 에러가 발생한 상태일 경우 log를 남긴다.
      8. OFF : log를 해제한다.

이렇게 JPA application.properties 설정에 대해서 알아봤습니다.

 

혹시라도 정정할 내용이나 추가적으로 필요하신 정보가 있다면 댓글 남겨주시면 감사하겠습니다.

오늘도 Jindory 블로그에 방문해주셔서 감사합니다.

 

[참고]

https://m.blog.naver.com/writer0713/221536526190

https://junhyunny.blogspot.com/2019/12/hibernate.html

반응형