inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Trong thực tế! Spring Boot và JPA Usage 2 - Phát triển API và tối ưu hóa hiệu suất

API yêu cầu thành viên

강사님 다대다 설정과 개인프로젝트 적용에 대해 질문있습니다

Đã giải quyết

1385

boki

31 câu hỏi đã được viết

0

강좌에는 카테고리-상품에 N:M 다대다 관계로 해놓으셨는데요!

제가 30살인데 29살에 퇴사하고 혼자 JPA공부해서 학교다니던 친구와 백1프론트1을 맡아서 프로젝트를 만들고있는데.. 1:N, N:1은 좀 해결했는데 N:M에서 막히고있어요ㅠㅠ 약간 힌트라도 주실 수 있으신지 해서 여쭤봅니다. 질문이 너무 많아서 힘드시면 직접적으로 말씀하셔도괜찮습니다..!

만약에 이런 경우는 어떻게 하나요?

(1) ~한다,~되다의 V 중간테이블

1.여러명의 회원은 여러개의 게시글을 찜목록에 추가할 수 있다.

1-1. 여러명의 회원은 여러개의 공고를 찜목록에 추가할 수 있다.

1-2. 여러명의 회원은 여러개의 기업을 찜목록에 추가할수있다.

USER(회원)과 기업/공고/게시글 엔티티 사이에 중간테이블을 놓고 유저ID랑, 각각 필요한 기업/공고/게시글 아이디로 매핑해놓은 상태인데요 - 검은색

이렇게 하는게 맞는지 궁금합니다.

(2) ~한다,~되다의 V 중간테이블

[회원]은 여러개의 [이력서]로 [공고]에 [지원]할 수 있다라고 해서

이력서와 공고의 N:M관계를 해소하고자 중간테이블을 만들고 지원한다라는 APPLY 엔티티를 따로 만들었는데, JPA에서도 이렇게 하면 되는건가요..?

(3) 중간테이블 질문

DB상으로는 외래키가 PK가 되면서 한 테이블안에 PK가 없어도 된다는 식으로 들었는데, 검색을해보니 JPK는 PK가 있어야된다하더라구요!?

만약에 N:M관계 중간에 중간테이블을 만들면 보통은 외래키 2개가 들어가는데, JPA식으로 만들면 PK, FK, FK해서 총 3개가 만들어지는게 맞나요?

(4) intelliJ에서 DB연결을 하고 data Diagram Visualization으로 매핑관계를 살펴보니

이렇게 나오는데.. intelliJ나 datagrip에서는 흔히 까마귀발이라고 하는 1:N, N:1 관계는 안보여주더라구요..!

그리고 mysql workbench reverse engineer모드로 erd를 그려봤는데..여기에서는 1:1관계도 1:N으로 나오는데...(분명히 유저와 멤버는 @OneToOne으로 양방향 매핑했는데도 이렇게 나옵니다.

혹시 DB를 설계하면서 잘 되었는지 erd로 뽑아보고싶은데, 아직 완벽하게 보여주는 건 없는건가요..?

java spring spring-boot JPA

Câu trả lời 2

1

yh

안녕하세요. 보키님

1. 이렇게 여러곳과 연관관계가 있으면 연관관계를 다 제거하고 테이블을 단순하게 구성하는게 더 나은 선택일 수 있습니다.

테이블의 구성 컬럼이 type(게시판, 공고), id 이렇게요. 공통 코드 테이블도 보통 이런식으로 설계합니다.

2. (2) ~한다,~되다의 V 중간테이블

JPA 기본편 강의 다대다를 참고해주세요.

3. 중간테이블 질문

JPA 기본편 강의 다대다를 참고해주세요.

4. 이 부분은 저도 잘 모르겠습니다.

감사합니다.

0

boki

역시 강의참고해서 많이혼자 해봐야겠네요...! 감사합니다

0

yh

네 화이팅!

0

boki

이미지들은 새 탭에서 이미지 열기로 하면 크게 잘 보이는것같습니다 ㅠㅠ

강의 관련 외 질문입니다.

0

68

2

SpringBoot4 + Hibernate7 모듈 등록 방법 공유

0

92

1

BeanCreationException

0

91

3

Update 후 UpdateMemberResponse 매핑할 때

0

50

1

트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?

0

101

2

페이징 + 검색조건 관련해서 질문드립니다.

0

70

1

Query Dsl Q파일 질문입니다.

0

84

1

루트 쿼리라는것은

0

60

1

메서드를 분리하는 기준

0

65

1

findAllWithMemberDelivery 메서드 질문드립니다.

0

111

3

연관관계 매핑을 안 쓸 경우, 사용해야 하는 전략

0

86

2

fetch join과 영속화와 OSIV의 관계

0

87

2

Distinct 사용 전 결과에 대한 의문

0

117

2

레포지토리 계층에서의 트랜잭션에 대한 의문

0

59

1

영속성 컨텍스트 생명주기의 신기한 부분이 있습니다.

0

78

2

dto 필드 속 엔티티 여부

0

60

1

뷰템플릿 사용 시

0

77

2

Result 클래스 관련 질문

0

56

1

@PostConstruct 프록시 관련 질문드립니다

0

86

1

DTO 대신 Form 사용은 안되나요?

0

138

1

OSIV ON 상태일 때

0

96

1

fetch join VS fetch join 페이징 궁금증

0

187

2

양방향 연관관계 알아보는 법?

0

106

1

16강 17강 간단 정리 이게 맞을까요 ?

0

166

2