Spring
JPA 데이터베이스의 데이터가 계속 사라진다면?
용용띠용
2025. 5. 15. 19:20
문제상황
: 애플리케이션을 실행할 때마다 기존에 데이터베이스에 저장해둔 데이터가 사라진다.
원인
: application.properties 파일의 JPA DDL 자동 설정에 이유가 있다.
spring.jpa.hibernate.ddl-auto=create
위의 코드가 작성되어 있었다. 이는 애플리케이션을 실행하면 기존 테이블을 전부 drop 하고 엔티티 정의에 따라 새로 테이블을 생성하도록 정의한 것이다. 따라서 매 실행마다 데이터가 삭제된 것이다.
해결책
: 설정값을 바꾼다.
spring.jpa.hibernate.ddl-auto=update
update로 설정값을 변경하면 엔티티 변경사항만 반영되고 데이터는 보존된다. 즉 앞서 발생했던 데이터가 실행마다 사라지는 문제를 해결할 수 있다.
여러가지 설정값
: 그 외에도 다양한 설정값이 있으니 참고하자.
설정 값 | 설명 |
create | 애플리케이션을 실행할 때마다 새로 테이블을 생성한다. 기존 데이터는 모두 삭제된다. |
create-drop | 애플리케이션 종료 시 테이블이 삭제된다. 테스트 할 때 유용하다. |
update | 엔티티 변경사항만 반영되고 데이터는 보존된다. |
validate | 스키마가 엔티티와 맞는지 검증만 하고 수정은 하지 않는다. |
none | 테이블을 생성하거나 수정하지 않는다. 즉 db 스키마를 건드리지 않는다. |