yml 프로파일 구분 관련 질문이 있습니다.
강의 잘 보고 있습니다. 감사합니다.
지금 설정해두신 yml 파일을 보면,
아무런 프로파일을 지정하지 않으면 local 프로파일을 이용한다고 되어 있고, local 프로파일에는 ddl-auto 설정이 create으로 되어 있습니다.
spring:
profiles:
default: local
datasource:
url: jdbc:h2:mem:~/cafeKioskApplication
driver-class-name: org.h2.Driver
username: sa
password:
jpa:
hibernate:
ddl-auto: none
---
spring:
config:
activate:
on-profile: local
jpa:
hibernate:
ddl-auto: create
show-sql: true
properties:
hibernate:
format_sql: true
defer-datasource-initialization: true # (2.5~) Hibernate ??? ?? data.sql ??
h2:
console:
enabled: true
기본 프로파일에는 ddl-auto 설정이 none으로 되어 있는데, 이 설정은 어떨 때 적용이 되는 건가요?
어차피 아무런 프로파일을 지정하지 않으면, local 프로파일대로 ddl-auto 설정은 create을 따라갈텐데 ddl-auto: none을 적어두신 이유가 궁금합니다.
결론은 아무런 프로파일을 지정하지 않았을 때,
local 파일의 ddl-auto 속성인 create이 되는지,
아니면 default 프로파일로 설정한 ddl-auto: none이 적용이 되는지가 궁금합니다.
답변 2
4
안녕하세요, 재영님! :)
일단 마지막 질문에 답변 먼저 드리자면, 말씀 주신 것처럼 default: local 설정이 되어 있기 때문에 아무런 프로파일을 지정하지 않았을 때 local 설정으로 수행되는 것이 맞습니다.
다만 기본 설정으로 none을 지정한 이유는, ddl-auto: create 가 워낙 위험한 기능이다 보니 혹시 모르는 상황을 대비한 방어 로직이라고 봐주시면 될 것 같아요.
예를 들어 default: local 설정이 빠져있는 상황에서 프로파일 지정을 하지 않고 실제 운영 환경에서 배포를 했다면, 모든 DB 데이터가 날아가는 사고가 생길 수 있습니다.
가능성은 낮겠지만, 미래에 어떤 형태로 생길지 모르는 휴먼 에러를 대비해서 나쁠 건 없으니까요 ㅎㅎ
도움이 되셨기를 바랍니다.
감사합니다. :)
0
안녕하세요, 인프런 AI 인턴이에요. yml 파일의 프로파일 설정과 ddl-auto 설정에 대한 질문이시군요.
첫째로, yml 파일에서 프로파일을 지정하지 않으면 “default” 프로파일인 “local”을 사용하게 됩니다. 따라서, 아무런 프로파일을 지정하지 않았을 때에는 “local” 프로파일에 설정한 내용이 적용됩니다.
둘째로, ddl-auto 속성은 JPA를 사용할 때 데이터베이스 스키마의 자동 생성 및 수정을 제어하는 속성입니다. “ddl-auto: none”으로 설정하면 JPA는 스키마를 자동으로 생성하거나 수정하지 않습니다. 다시 말해, 애플리케이션 실행 시 디비 스키마에 아무런 변경이 일어나지 않습니다.
그러므로, 아무런 프로파일을 지정하지 않은 경우 “default” 프로파일인 “local”의 ddl-auto 설정인 “create”이 적용되고, “ddl-auto: none” 설정은 무시됩니다. 따라서, 설정 파일에 “ddl-auto: none”을 적어두신 이유와 상관없이 “create” 설정으로 동작할 것입니다.
프로파일에 따라 ddl-auto 설정을 다르게 조정하고 싶으시면, 각 프로파일에 맞게 ddl-auto 속성 값을 변경하시면 됩니다.
추가적인 질문이 있으시면 언제든지 물어보세요. 좋은 하루 되세요!
private 상수 테스트 관련 질문
0
83
1
void는 어떻게 테스트하나요..? void로 애초에 코딩하면 안되나요??
0
126
2
커버리지는 어떻게 활용하시는지 궁금합니다.
0
161
2
테스트 문서화 질문입니다
0
105
2
단위테스트 질문이 있습니다
0
96
2
컨트롤러는 모킹을 한 이유가 궁금합니다.
0
103
2
ERD 가장자리에 있는 도메인 테스트 질문
0
89
2
DTO 검증 필드에 대한 테스트 코드 작성은 어디까지?
0
135
2
OrderCreateRequest DTO에 대해서 궁금한점
0
102
2
고전파의 테스트 대역 사용 대상, 공유 의존성
0
156
2
계층 관련 질문이 있습니다.
0
139
3
'코틀린'에서는 빌더를 따로 쓰지 않는데, 이 때는 어떻게 test fixture를 만드시는지 궁금합니다
1
124
2
혹시 update 로직은 어떻게 테스트하나요? (@Setter?)
0
135
2
단위테스트와 통합테스트의 경계가 궁금합니다.
0
229
2
Service+Repository 통합테스트 관련 질문입니다.
0
150
2
OrderControllerDocsTest 작성 해봤는데요. 날짜 형식이 이상하게 나와요
0
185
2
test 용 .yml
0
90
2
throws Exception
0
80
2
카페키오스크 클래스 문의 ,,
0
89
2
Rest docs 문서용 테스트코드를 따로 작성해야 되나요?
0
174
2
테스트 코드에서 필요한 생성자
0
138
1
tearDown 순서
0
116
2
@Builder 생성자 private
0
136
2
@DisplayName gradle / intellJ
0
93
2





