inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

프로젝트 실행시 'JPA 설정 - ddl-auto' 옵션에 대한 질문입니다.

해결된 질문

498

Henu

작성한 질문수 66

1

안녕하세요. 

이전 질문들에 대한 답변 감사드립니다.

이번에는 웹 애플리케이션 실행시 JPA 설정에 따른 모든 테이블의 DROP, CREATE에 대해 

궁금한 사항이 있어 여쭙습니다.

강의 초반에 gradle을 통한 스프링부트 프로젝트 및 .yml을 통한 Datasource 설정이 있었는데요.

application.yml(운영용)  JPA의 'ddl-auto:create' 설정은 애플리케이션 실행 시점에서 

테이블을 Drop하고, 다시 생성한다라고 언급을 해주셨습니다.

다만, 실제로 애플리케이션 재시작 시 문제는 안되지만,

로그를 살펴보니 테이블을 DROP 하는 부분에서 Error 로그가 출력되고 있어 분석해본 결과,

연관관계(외래키를 통해...) 설정 되어 있는 테이블에 대해서는,

외래키가 있는 테이블이 먼저 DROP이 된 후 상위 테이블(?)이 DROP이 되어야 하는데

이 행위가 순차적으로 이루어지지 않아서 발생하는 문제로 분석이 되었습니다.

혹시 서로 연관된 테이블에서 외래키가 설정되어 있다면 

먼저 외래키가 설정된 테이블이 DROP되고 상위 테이블이 DROP되게 하는 설정이 추가로 존재할까요?

[h2 version : 1.4.200,]

강의를 듣다가 추가 질문 사항이 생겨 내용을 좀 수정하였습니다.

'회원 등록 및 조회' 강의에서 마지막 쯤 팀장님께서 

<form> 데이터를 처리하기 위해서 Entity Class에 별도의 처리를 하지 않고,

DTO의 역할을 하는 Class를 만들어서 사용하는 것을 권장한다고 언급을 해주셨는데요.

저 같은 경우 흔히 DTO와 VO의 용어를 혼동에서 사용하는 때가 많습니다.

강의를 듣고 정리하자면,

<form> 데이터를 처리하기 위한 별도의  Class(MemberForm과 같은...)는 'DTO'가

Entity Class는 'VO'가 되는 것이라고 칭해도 될까요?

미리 답변 감사드립니다.

spring-boot 웹앱 java JPA spring

답변 1

1

김영한

안녕하세요. Painkiller님^^

2 데이터베이스를 1.4.199 버전으로 로컬에 다시 설치해주세요.

(1.4.199로 다시 설치하면 로컬에 .jpashop.mv 파일도 함께 삭제하고 완전히 처음부터 진행하시길 권장드립니다.)

1.4.200 버전이 아직 안정화 버전이 아니어서 일부 이슈가 있습니다.

(DROP TABLE의 경우 말씀하신데로 순서 이슈가 있는데, 이 부분은 하이버네이트에서 패치가 함께 되어야 할 것 같더라구요. 우선은 방법이 없으니, H2 데이터베이스를 1.4.199 버전으로 사용하시길 권장드립니다.)

두번째 질문인 DTO와 VO에 대한 내용입니다.

DTO는 정말 데이터를 전송하기 위해 비즈니스 로직이 거의 없고, 정말 단순히 데이터만 전송할 목적으로 사용하는 객체입니다.

반면에 VO는 Value Object 인데, 이 부분은 DTO와 다릅니다. 우리가 아는 String, LocalDateTime 같은 객체들이 Value Object 입니다.

JPA 기본편 섹션9. 값 타입에서 VO에 대해서 매우 자세히 설명해드리고, JPA에서 실제 이것을 어떻게 활용하는지 이해하실 수 있을거에요^^

감사합니다.

sdk 설정 오류

0

50

2

오탈자 - @Transactional

0

55

1

src/test/resources 테스트 경로 문제

0

50

1

상품 등록후 H2 db 출력 순서 바꿀 수 있나요?

0

64

1

MemberRepositoryTest 실행오류

0

81

1

boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)

1

183

2

강의 마지막 QueryDSL 사용 부분 질문있습니다

1

138

2

클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.

0

51

1

도메인 모델 패턴 vs 트랜잭션 스크립트 패턴

0

71

1

기본 생성자

0

60

1

h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.

0

100

1

멤버서비스테스트 부분에서 막힙니다.

0

164

4

실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?

0

116

1

초반에 h2 다운로드 과정 꼭 필요한가요?

0

118

2

자신 필드에도 get으로 접근하는 이유가 있을까요?

0

113

1

24분 27초 연관관계 편의 메서드 위치

0

113

1

단건 주문만 가능하게 한건 의도한 부분이신가요?

0

108

2

빌드 툴, Gradle

0

59

1

h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다

0

76

2

Repository에서 EntityManager 주입 방식 차이

0

88

1

롬복과 사용자 정의 setter 메서드

0

71

1

주문 목록 조회 fetch join 질문드립니다

0

81

1

dirty checking 질문드립니다.

0

81

1

동시성 관련 질문입니다

0

74

1