반응형
안녕하세요. 개발자 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
- spring.datasource.driver-class-name
- spring.datasoruce.jdbc-url(연결할 데이터베이스 주소를 설정)
- spring.datasource.username/password(연결할 데이터베이스 ID와 PW 설정)
- 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
- spring.jpa.database(데이터베이스 설정) : 사용할 데이터베이스 종류를 입력한다.
- MySQL : mysql
- Oracle : oracle
- H2 : h2
- spring.jpa.database-platform(쿼리문 방언 설정) : SQL문을 생성할 데이터베이스의 Dialect를 설정한다.
- Spring Data JPA는 기본적으로 hibernate라는 JPA 구현체를 사용한다.
- Hibernate는 내부적으로 지정되는 DB에 맞게 SQL 문을 생성하는 Dialect가 존재한다.
- Dialect는 Hibernate가 다양한 데이터베이스를 처리하기 위해 각 데이터베이스에 맞는 SQL 문법을 생성하기 위해 설정한다.
- 설정값(참고링크)
- MySQL : MySQL5Dialect, MySQL5InnoDBDialect
- Oracle : Oracle10gDialect, Oracle12cDialect
- H2 : H2Dialect
- spring.generate.ddl(DDL 고유기능 사용 유무)
JPA의 엔티티 연관관계를 바탕으로 테이블 생성과 같은 스크립트(Data Definition Language:DDL)를 자동으로 실행하도록 한다. - spring.hibernate.ddl-auto(데이터베이스 생성,업데이트,삭제,비활성에 대한 설정)
- create : 테이블이 없을 경우, 테이블 생성
- create-drop : 테스트 실행시 mock Data를 위해 table을 생성하고 테스트 종료 후 생성한 테이블을 Drop
- validate : application 실행시 @Entity 들과 이미 존재하는 테이블(Schema)가 정상적으로 매핑되었는지 판단하여 만약 @Entity와 테이블이 제대로 맵핑 되지 않으면, appliction이 실행되지 않는다.
- update : 이미 테이블이 존재하는 상황에서 @Entity속성이 추가될 경우, 기존 데이터에는 변환 없이 새로운 Column을 추가한다.
- none : 아무 설정도 적용하지 않는다.
- spring.hibernate.use-new-id.generator-mappings(Hibernate 자동키 생성 전략)
- AUTO(default) : JPA 구현체가 자동으로 생성 전략을 결정한다.
- IDENTITY : 기본키 생성을 데이터베이스에게 위임한다. MySQL의 경우 AUTO_INCREMENT를 사용하여 기본키 생성
- SEQUENCE : 데이터베이스의 특별한 오브젝트 시퀀스를 사용하여 기본키를 생성한다.
- TABLE : 데이터베이스에 키 생성 전용 테이블을 만들고 이를 사용하여 기본키를 생성한다.
- spring.jpa.properties.hibernate.format_sql(SQL의 Query 가독성을 높게 해주는 옵션)
- spring.jpa.properties.hibernate.use_sql_comments(주석 추가)
- spring.jpa.show-sql(쿼리문 보이도록 설정)
# Logging
# hibernate logging
logging.level.org.hibernate = info
- hibernate logging 레벨을 info 레벨로 설정합니다.
- loggin level은 아래와 같은 단계로 있습니다
- ALL : 모든 레벨을 포함하여 log를 남긴다.
- TRACE : 추적 레빌을 debug보다 좀더 상세한 정보를 나타낸다.
- DEBUG : 프로그램을 디버깅하기 위한 정보를 log로 남긴다.
- INFO : 상태변경과 같은 정보성 메시지를 log를 남긴다.
- WARN : 처리 가능한 문제, 향후 시스템 에러의 원인이 될 수 있는 경고성 메시지를 log로 남긴다.
- ERROR : 요청을 처리하는 중 문제가 발생한 경우 log를 남긴다.
- FATAL : 아주 심각한 에러가 발생한 상태일 경우 log를 남긴다.
- OFF : log를 해제한다.
- loggin level은 아래와 같은 단계로 있습니다
이렇게 JPA application.properties 설정에 대해서 알아봤습니다.
혹시라도 정정할 내용이나 추가적으로 필요하신 정보가 있다면 댓글 남겨주시면 감사하겠습니다.
오늘도 Jindory 블로그에 방문해주셔서 감사합니다.
[참고]
반응형
'개발 > JPA' 카테고리의 다른 글
[JPA] Eclipse에서 QueryDsl 설정하기 (0) | 2022.05.21 |
---|---|
[JPA] JPA 설정 방법 (0) | 2022.05.01 |
[JPA] 객체지향 쿼리 (0) | 2022.02.22 |
[JPA] JPA 영속성 컨텍스트 (0) | 2022.02.22 |
[JPA] JPA 연관관계 매핑 (0) | 2022.02.17 |