반응형

Spring Boot에 hibernate, jpa 를 설정하다보면 spring.jpa.hibernate.ddl-auto라는 옵션이 있는데,

create, create-drop, update, validate라는 4가지 옵션을 지원한다.


ddl-auto 기능에 대해 간단히 설명하자면,

java언어에서 Object를 선언해두고, @Entity만 붙이면, 

WebApplication이 올라갈 때 (정확히는 hibernate의 sesseionFactory가 올라갈 때)DataSource에 접근을 해서 

DBMS의 스키마를 자동으로 Alter를 하거나 지우고 다시 만들거나 검증하거나 하는 역할을 해준다.


WebApplication이 올라갈 때 DBMS 스키마에 무슨 행위를 할 것인가에 대해 정하는 정책이라고 보면 쉽다.


4가지 옵션에 대해 알아보자.


create : SessionFactory가 올라갈 때 테이블을 지우고 새로 만듬. (sql문을 별도로 만들어서 데이터를 넣는 용도로도 사용가능하다.)


create-drop : create와 동일하지만, SessionFactory가 내려가면 해당 테이블을 drop시킨다.


update : SessionFactory가 올라갈 때 Object를 검사하여 테이블을 alter 시킨다. 데이터는 유지됨.


validate : update처럼 Object를 검사하지만, 스키마는 아무것도 건드리지 않고, Object와 스키마의 정보가 다르다면 에러를 발생시킨다.


create, create-drop은 개발 환경에서 사용하면 편리하지만, live에서 사용은 조금 위험할 수 있을 것 같다.

live환경에서는 update나 validate를 잘 사용하면 좋을 것 같다.

반응형

'개발 > JPA, Hibernate' 카테고리의 다른 글

[Hibernate] Hibernate Validator  (0) 2016.06.11
[Hibernate] Custom Validator  (0) 2016.06.11
[Hibernate] Entity 선언 시 주의점  (0) 2016.06.11
[Spring Data Jpa] limit와 ordering  (1) 2016.06.11
[Spring Data Jpa] custom query 적용  (0) 2016.06.11
,