inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Thực hành! Dữ liệu Spring JPA

Cách phân biệt các thực thể mới

안녕하세요. 야생학습을 하다 궁금한 점이 있어서 질문을 남겨요!

Đã giải quyết

355

dion

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

2

Note라는 엔티티와 Tag라는 Entity가 있는데 서로 M:N 구조여서 매핑 테이블을 사이에 두고 쪼개주었습니다.

그런데 Note를 save할 때, Tag가 기존에 있던 태그라면 매핑 테이블에만 정보를 추가해주고, 아니라면 Tag 테이블에 추가되는 식으로 구현을 하고 싶습니다.

for (String tagName : tags) {
Optional<Tag> optionalTag = tagRepository.findTagByTagName(tagName);
Tag tag = optionalTag.orElseGet(() ->
Tag.builder()
.tagName(tagName)
.activated(true)
.build()
);
NoteTag noteTag = NoteTag.builder()
.tag(tag)
.note(note)
.build();
note.getNoteTags().add(noteTag);
}
noteRepository.save(note);

이런식으로 구현을 했는데, 생각을 해보니까 태그의 개수가 많을 경우 조회를 많이하게 될 것 같더라고요.

어떻게 해결을 해야 한 번만 조회를 해오도록 할 수 있을까요?

강의를 다 보질 않아서 혹시 강의로 해설이 된 내용이 있다면 그 부분을 찾아서 보겠습니다. 흑흑...

spring-boot JPA spring java

Câu trả lời 2

3

dion

와 감사합니다! inQuery를 생각만 해보고 해보지를 않았네요!

빠른 답변 감사합니다! 최고에요!👍

3

yh

안녕하세요. 선동님 열심히 하고 계시군요^^

처음 조회할 때 tagName을 하나하나 조회하는 것이 아니라 tagNames로 한번에 모든 테그를 조회하는 방식으로 처리하면 됩니다.

IN 쿼리를 활용하는 것이지요. 그러면 쿼리 1번으로 해결할 수 있습니다^^

참고로 활용2편에서 비슷한 최적화 방법들을 학습하실 수 있습니다.

감사합니다.

new 패키지명.Dto명 생략가능

0

107

2

changeTeam 메서드 질문

0

94

1

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

0

134

1

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

0

184

3

MemberRepository 구현체

0

116

1

pdf 표현 질문드립니다.

0

113

1

로그가 남지 않는 문제.

0

166

1

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

0

132

2

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

0

132

2

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

0

167

2

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

0

87

1

스캔대상 질문드립니다.

0

89

1

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

0

146

1

save() vs saveAndFlush DB 통신 횟수

0

99

1

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

0

135

2

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

0

228

3

bulk insert 질문입니다.

0

261

2

교만했던 것 같아요.

0

194

1

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

0

200

2

동적 테이블에 대한 질문

0

136

1

영속성 전이와 연관관계

0

190

2

강의 10:25 질문

0

106

1

단건 update 질문

0

135

2

엔티티 와 도메인의 경계

0

168

1