inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 데이터 JPA

Specifications (명세)

insert에 대해서 문의드립니다.

264

narashine

작성한 질문수 3

1

안녕하세요 김영한님:)

실무 적용 중에 궁금한게 있어서 문의 드리는데요.

보통 entity내에 joinColumn이든 mappedBy든 연관관계를 성립 시켜주는데요

그냥 단순히(?) 주문생성(주문관련된 테이블들에 insert이 이루어짐)만 이루어진다면

굳이 연관관계 맵핑을 하지 않고 각 주문관련 테이블들에 하나씩 컨트롤 하면서 insert 하는게 편리할 것 같다는 생각이 들어서.. 

이런 접근 방법이 맞을까요? 

물론 테이블 간 FK로 묶여 있는 테이블들도 있긴 한데 이런 경우는 위 처럼 하면 JPA의 객제관점으로 테이블에 접근 하는 관점에서는 어긋나는것 같기도 하고...영한님의 의견은 어떠실까요?

참고로 이 서비스는 사실상 주문관련 테이블은 insert만 이루어지고 select는 상태값 정도 조회하는 신규 api 입니다. 

쿼리가 아닌 JPA 관점에서 접근하는 게 생각보다 딱 이거다 이런게 명확하지 않으닌까 생각이 진짜 많아지는것 같아요 ㅠㅠ

감사합나다.

spring JPA java spring-boot

답변 1

3

김영한

안녕하세요. narashine님

2가지 관점이 있습니다.

1. 완전히 연관관계를 다 맺어주어야 한다.

2. 반대로 연관관계를 하다도 맺지 말자.

이 사이에서 적절한 선택이 필요합니다.

그리고 정말 서로 연관이 많은 부분만 연관관계를 가져가도록하는 설계 방법도 있습니다. 이것이 바로 DDD의 AggregateRoot라는 개념입니다.

연관관계가 있으면 객체사이에 연관된 부분도 알 수 있고, 코드를 더 객체지향 스타일로 작성하는 것도 가능합니다. 추가로 fetch join 같은 강력한 JPA의 기능 지원도 받을 수 있습니다. 이런 이점들 때문에 JPA를 사용한다면 연관관계를 가지고 가는 방향으로 고민하시는 것이 좋습니다.

그런데 모든 곳에 연관관계를 맺을 필요는 없습니다.

예를 들어서 로그성 테이블, 공통 코드 테이블 등은 연관관계를 맺지 않아도 됩니다.

감사합니다.

existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?

0

64

1

existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?

0

100

3

MemberRepository 구현체

0

55

1

pdf 표현 질문드립니다.

0

59

1

로그가 남지 않는 문제.

0

78

1

테스트 라이브러리가 강의는 junit4가 맞나요??

0

67

2

pdf 파일과 차이점이 있는 것같은데 문제 없나요?

0

68

2

@PrePersist, @PreUpdate 호출 시점 질문드립니다.

0

87

2

Sort 인터페이스는 잘 사용 안하나요?

0

50

1

스캔대상 질문드립니다.

0

45

1

하이버네이트6에서의 최적화에 이은 질문

0

81

1

save() vs saveAndFlush DB 통신 횟수

0

50

1

순수 JPA 리포지토리 코드 수정부분

0

85

2

bulk연산 후 flush하는 이유를 모르겠어요

0

147

3

bulk insert 질문입니다.

0

174

2

교만했던 것 같아요.

0

142

1

RESTful 강의는 안하시는 건지 궁금합니다.

0

143

2

동적 테이블에 대한 질문

0

84

1

영속성 전이와 연관관계

0

128

2

강의 10:25 질문

0

71

1

단건 update 질문

0

94

2

엔티티 와 도메인의 경계

0

124

1

UsernameOnlyDto 타입 type mismatch 오류

0

114

1

Projection 개념과 데이터 전달과정에 대해 질문 있습니다.

0

131

1