-
Notifications
You must be signed in to change notification settings - Fork 1
ddl auto
하이버테이트가 제공하는 기능이라고 합니다.
none
, validate
, update
, create-drop
이렇게 3가지 옵션이 있습니다.
설정을 따로해주지 않으면 default 값이 할당된다고 합니다.
요건 디비가 embedded이면 create-drop
이고, 아니면 none
입니다.
Q: "그럼 embedded 디비인지 아닌지는 어떻게 알지?"
A: connection type으로 구분한다네요. hsqldb
, h2
, derby
요거 3개면 embedded라고 판단합니다.
각 옵션들의 동작은 아래와 같습니다.
none: No action will be performed. 인스턴스를 띄웠을때, 이미 데이터베이스가 운영중인 상황에서 사용
create-only: Database creation will be generated. 로컬에서 테스트시 사용, 인메모리 디비라 디비 생명주기가 앱이랑 동일할때 사용
drop: Database dropping will be generated. 사용한적 없음
create: Database dropping will be generated followed by database creation. 로컬에서 테스트시 사용, 테스트용 디비 서버 있으면 사용
create-drop: Drop the schema and recreate it on SessionFactory startup. Additionally, drop the schema on SessionFactory shutdown.
validate: Validate the database schema
update: Update the database schema
테스트/운영, 디비가 임베디드인지 아닌지에 따라 다릅니다.
사실 운영환경에서는 오직 validate
하나만 쓴다고 알아두면 간편합니다.
어플리케이션에서 사용하려 하는 스키마와 운영중인 디비 스키마가 다르면, 어플리케이션이 구동중에 죽거든요.
만약 none
으로 세팅되어 있다면(default가 none
입니다.), 유저의 요청이 어플리케이션까지 들어와서 디비에 쿼리 날려봐야 스키마가 다르단걸 알기 때문이죠.
p.s. import.sql이라는 시작할때 실행되는 친구 만들 수 있다고 합니다.(아주 유용👍)