진짜 개발자
본문 바로가기

FrameWork/Spring JPA

JPA - jpa hibernate의 ddl 자동생성 옵션과 초기화 전략 그리고 Error executing DDL "alter table user drop foreign key 해결방법

728x90
jpa 초기화 전략과 Error executing DDL alter table user drop foreign key 에러

이번시간에는 Error executing DDL "alter table user drop foreign key에러의 원인과 해결방법, 그리고 Spring JPA의 초기화 전략에대해 알아보도록 하겠습니다.

 

 

 

 

1. Spring JPA / Hibernate의 초기화 전략

generate-ddl 옵션 (spring.jpa.hibernate.ddl-auto)

Spring JPA를 사용하시는 분들이라면 spring.jpa.hibernate.ddl-auto옵션을 자주 사용하셨을 것입니다. 다들 아시겠지만, 굳이 한번더 설명드리자면, JAVA의 Entity설정을 참고하여 Spring Application 실행시점에 Hibernate에서 자동으로 DDL을 생성하여, 필요한 Database의 Table설정들을 자동으로 수행해주는 기능입니다.

설정 가능한 값은 true , false 둘중 하나 입니다.

 

spring boot에서 설정하는 경우, yml형식의 파일을 기준으로 위와 같이 설정을하면 됩니다.

 

 

 

DDL AUTO 옵션 (spring.jpa.hibernate.ddl-auto)

spring.jpa.hibernate.ddl-auto옵션의 경우에는 Jpa의 Database 초기화 전략을 의미합니다. 설정 가능한 값은 아래와 같이 5가지가 존재합니다.

  • none : 아무것도 실행하지 않음.
  • create-drop : SessionFactory 시작시점에 drop후 create를 실행하며, SessionFactory 종료시 drop을 실행함.
  • update : 변경된 스키마를 적용.
  • create : SessionFactory 시작시점에 drop을 실행하고 create를 실행.
  • validate : 변경된 스키마가 존재하면 변경사항을 출력하고 app을 종료.

 

 

 

 

2. Error executing DDL "alter table user drop foreign key

create_drop 설정은 실행시 table을 모두 drop합니다. 따라서 alter할 테이블을 찾지 못하여 나타나는 에러입니다. 초기화 옵션을 update로 변경하면 에러가 해결됩니다.