스프링 강의를 계속 보던중 JPA에 관한 실습을 계속 진행하다보니 프로젝트를 재실행 할때마다 DB가 Drop되고 다시 Create되는 현상을 발견했다. 그러다보니 혹시 이미 데이터베이스에 많은 데이터가 있는데 JPA를 적용하면 큰일이 나는게 아닌가 하는 생각이 들었다. 실제로 회사에 있을때 나는 PHP 라라벨 기반의 프로젝트를 자바 스프링으로 바꾸려고 시도한 적이 있었다.(결국 여러가지 이유로 변경하지 못했지만....) 그럴때 이미 가지고 있는 유저 데이터가 전부다 날아가는게 아닌가 하는 생각이 들어서 table을 유지 시키는 방법을 찾아보았다.
JPA를 사용하기위해서 application.properties에 spring.jpa.hibernate.ddl-auto=create를 추가하였다. 이것이 문제가 되었다. 찾아보니 ddl-auto를 create로 설정시 테이블이 drop되고 다시 테이블이 생성되었다
spring.jpa.hibernate.ddl-auto=create: 테이블이 삭제된 후 다시 생성된다.
spring.jpa.hibernate.ddl-auto=create-drop: create와 비슷하나 종료시점에 테이블이 drop 된다.
spring.jpa.hibernate.ddl-auto=update: 변경된 코드 부분만 반영된다.
spring.jpa.hibernate.ddl-auto=validate: 엔티티와 테이블이 매핑되었는지만 확인한다.
spring.jpa.hibernate.ddl-auto=none: 사용하지 않는다.
개발단계에서는 create를 사용하는게 좋으나 결국 유지되고 있는 서비스는 validate나 none으로 설정을 하고 직접 코드와 DB를 수정해야 할것같다.
오늘도 공부하다보니 결국 방법은 다있었고.. 그걸 해결하지 못한게 나였다 ㅠㅠ 열심히 공부해야지