• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

DB 초기화 관련 질문입니다.

20.10.14 02:27 작성 조회수 289

0

강의 정말 잘 듣고 있습니다. 감사드립니다.

영한님의 경우 프로젝트 재실행마다 모든 DB 테이블이 초기화 되는데, 저는 주문 내역만 초기화되고, 이외의 테이블들은 초기화가 되지 않습니다. ( 근데 또 이상한게 아까 설정 한번 건드려봤을 땐 한번 됐었는데 또 안되네요;; )

어떻게 설정을 바꾸면 모두 초기화가 될까요? 주문 내역 테이블은 초기화가 되는데, delivery 테이블은 초기화가 되지 않아서 PK 중복 에러가 자꾸 나네요ㅠ

main의 application.yml

test의 application.yml

p.s. 영한님 저서 '자바 ORM 표준 JPA 프로그래밍' 책은 2015년 출간 되었던데, 이후 개정된 적은 없나요?!

답변 4

·

답변을 작성해보세요.

1

hash_t님의 프로필

hash_t

질문자

2020.10.17

감사합니다 영한님 다음 JPA도 열심히 수강하겠습니다 :)

좋은 주말 보내세요!

1

안녕하세요. Ting-Kim님

혹시 build.gradle에 다음 부분이 지정되어 있는지 확인해주세요.

이렇게 하면 h2 데이터베이스 1.4.200 제약조건 문제로 테이블 초기화가 안되는 문제를 해결할 수 있습니다.

이렇게 설정하고 gradle refresh 하신 다음에 만약 그래도 문제가 발생하면, 전체 코드를 압축해서 zipkyh@naver.com으로 메일 보내주세요^^

p.s: JPA 책은 JPA 3.0 버전이 나오면 개정하려구요^^ 아직은 JPA 자체가 크게 바뀌지 않아서 개정하지 않았습니다.

ext["hibernate.version"] = "5.4.20.Final" //하이버네이트 버전 지정
ext["h2.version"] = "1.4.200" //h2 데이터베이스 버전 지정

0

안녕하세요. Ting-Kim님

코드를 돌려보았습니다. 잘 되더라구요^^

우선 create 모드로 진행하셨기 때문에, 처음에 테이블을 모두 삭제하고, 애플리케이션 종료 이후에는 테이블에 데이터가 남아있어야 합니다. 참고로 create-drop 모드는 애플리케이션 종료 시점에 테이블을 모두 drop 합니다.

따라서 Delivery 테이블의 결과가 그대로 남아있는 것이 맞습니다. 추가로 주문 내역도 남아있어야 합니다.

Delivery 테이블의 결과에 STATUS가 READY로 남아있는 것은 주문 취소를 했을 때 주문상태를 변경하는 로직을 예제에서 따로 개발하지 않았기 때문입니다^^

도움이 되셨길 바래요.

0

hash_t님의 프로필

hash_t

질문자

2020.10.14

감사합니다 영한님. 잘 해결되었습니다.

그런데 마지막으로 돌려보니 궁금한점이 생겼습니다.

주문을 취소했을 경우에 주문내역에서 취소는 잘 되고 DB에서도 삭제가 되는 것을 확인하였는데,

DELIVERY 테이블에서는 그대로 DB에 남아있고, STATUS도 READY 상태로 있더라구요.

제가 빠트린건지 아니면 이 부분은 따로 일부러 예제에 넣지 않으신건지 궁금합니다..!

혹시 몰라서 코드 압축파일 송부드렸습니다 :)