JPA

JPA 운영중에 칼럼이 새로 추가 될때 어떻게 해야할까?

이세형 2020. 12. 7. 22:46

JPA로 백앤드 서버를 운영할 때 DB에 새로운 컬럼을 추가해야 하는 상황이 있을 수 있다.

 

entity와 db는 서버를 구동할 때 맵핑이 된다.

 

운영중인 애플리케이션의 경우 jpa.hibernate.ddl-auto 옵션이 일반적으로 none이다. 따라서 JPA의 Entity에 원하는 컬럼 필드를 추가하고 서버를 재실행 하더라도 바로 DB에 반영이 되지 않는다.

 

그렇다면 jpa.hibernate.ddl-auto 옵션을 update 바꾸는 것은 어떨까? 먼저 결론 부터 말하면 이는 운영상에 큰 문제를 가져올 수 있다. update로 하면 새로 추가하고자 하는 컬럼에 대해 alter문이 실행돼서 db가 업데이트 되는 것은 맞다. 하지만 update 옵션 설정을 깜빡하고 있다가 기존에 존재하던 컬럼이 삭제되는 경우이다. 삭제된 컬럼이 매우 중요한 데이터 였다면? 매우 크리티컬하다.

 

따라서 운영중인 애플리케이션의 경우 새로운 칼럼이 추가되게 된다면 jpa ddl-auto 옵션을 통해 해결하려하지 말고 직접 db에 원하는 칼럼을 추가해주도록하자.

 

항상 명심하자 운영중인 애플리케이션의 jpa.hibernate.ddl-auto은 none 을 유지한다.