existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?
99
작성자 없음
작성한 질문수 0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오) 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예
[질문 내용]
여기에 질문 내용을 남겨주세요.
==============================
안녕하세요.
Spring Data JPA에서 연관관계 필드에 대한 exists 메서드 사용 시, 아래 두 방식 중 어떤 방식이 더 적절한지 궁금합니다.ProjectMember 엔티티는 아래처럼 Project, User와 연관되어 있습니다.
public class ProjectMember {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "project_id", nullable = false)
private Project project;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id", nullable = false)
private User user;
}
사용자가 특정 프로젝트에 포함되어 있는지 확인하려고 할 때, 아래 두 가지 방식을 테스트해봤습니다.
1. 식별자 사용: boolean existsByUserIdAndProjectId(Long userId, Long projectId)
단점:
이 메서드를 실행하면,project_members테이블에user_id,project_idFK가 있음에도 불구하고users,projects테이블과 불필요한 left join이 발생했습니다.실행 SQL:
select pm1_0.id
from project_members pm1_0
left join users u1_0 on u1_0.id = pm1_0.user_id
left join projects p1_0 on p1_0.id = pm1_0.project_id
where u1_0.id = ? and p1_0.id = ?
fetch first ? rows only;
2. 엔티티 사용: boolean existsByUserAndProject(User user, Project project)
장점:
이 경우에는 조인 없이 where 절에서 FK 컬럼으로 조회되었습니다.단점:
하지만, 이 메서드를 사용하려면 서비스에서 userId, projectId 를 이용하여 User와 Project를 추가로 조회해야 한다는 단점이 있습니다.실행 SQL:
select pm1_0.id
from project_members pm1_0
where pm1_0.user_id = ? and pm1_0.project_id = ?
fetch first ? rows only;
결론: 이 경우 두 방식 중 어떤 것을 사용하는 것이 더 좋은 선택인가요?
답변 3
0
상대론은 수학의 exp를 없애버린 의미없는 곡선이지만,통일장은 정지하고 있는 두 개의 양성자와 중성자를 사방에서 레이저로 압축해준 (NIF)의 레이저 압축에 의한 핵 융합을 확인했다.통일장은 미국 학술 AJE가 후원하며 대한민국 권기준과 영국 학술 mature지의 공동 소유다(2026/3/4).
0
통일장 이론은 2023년 초에 영국 학술 nature지에 등록되었고 2023년 말에
미국 리버모어 연구소에서 레이저를 이용한 핵 융합에 성공함으로서 실험적으로도 확립되었습니다.
0
상대론은 수학의 exp를 없애버린 의미없는 곡선이지만,통일장은 정지하고 있는 두 개의 양성자와 중성자를 사방에서 레이저로 압축해준 (NIF)의 레이저 압축에 의한 핵 융합을 확인했다.통일장은 미국 학술 AJE가 후원하며 대한민국 권기준과 영국 학술 mature지의 공동 소유다(2026/3/4).
0
상대론은 수학의 exp를 없애버린 의미없는 곡선이지만,통일장은 정지하고 있는 두 개의 양성자와 중성자를 사방에서 레이저로 압축해준 (NIF)의 레이저 압축에 의한 핵 융합을 확인했다.통일장은 미국 학술 AJE가 후원하며 대한민국 권기준과 영국 학술 mature지의 공동 소유다(2026/3/4).
existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?
0
64
1
MemberRepository 구현체
0
54
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
JUnit4, JUnit5 충돌 문제
0
177
2





