해결된 질문
작성
·
831
·
수정됨
1
강의 잘 보고 있습니다. 감사합니다.
지금 설정해두신 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
3
안녕하세요, 재영님! :)
일단 마지막 질문에 답변 먼저 드리자면, 말씀 주신 것처럼 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 속성 값을 변경하시면 됩니다.
추가적인 질문이 있으시면 언제든지 물어보세요. 좋은 하루 되세요!
그런 이유였군요,, 친절한 답변 감사합니다!