-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Study Repository 외래키 조회 네이밍 수정 #108
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오랜만의 PR 리뷰네요 ㅎㅎ
개선할 것을 찾고, 리팩토링하는 과정을 보면서 옆에서 많이 배울 수 있었습니다!
테스트 성공한거 첨부한 것도 너무 좋네요~
주말 잘 보내세요 동동!
@@ -57,7 +57,7 @@ public AssignmentDetailResponse create(AssignmentRequest assignmentRequest, Long | |||
assignmentRequest.getPhoto()) | |||
); | |||
|
|||
List<StudyMember> studyMembers = studyMemberRepository.findStudyMembersByStudyId(assignmentRequest.getStudyId()); | |||
List<StudyMember> studyMembers = studyMemberRepository.findStudyMembersByStudy_Id(assignmentRequest.getStudyId()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이렇게 되면 굳이 Study 도메인 객체를 찾아오지 않고도 조회가 되니 쿼리를 줄일 수 있어 좋은 것 같아요!
너무 좋았습니다!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
혹시 쿼리도 실제로 잘 나가는지 확인해보셨나요? 갑자기 궁금해서 질문 남깁니다!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
select
studymembe0_.member_study_id as member_s1_16_,
studymembe0_.leader as leader2_16_,
studymembe0_.member_id as member_i3_16_,
studymembe0_.study_id as study_id4_16_
from
study_member studymembe0_
left outer join
study study1_
on studymembe0_.study_id=study1_.study_id
where
study1_.study_id=?
저도 확인을 안해봤어서 방금 확인 결과 (예시)findByStudyId 와 findByStudy_Id 둘의 쿼리는 위와 동일하게 나갑니다.
그렇다면 왜 _ 을 붙여서 네이밍을 해야할까?
궁금해서 이에 대한 답도 찾아봤습니다.
이슈에 작성한 내용에서 말했듯이 JPA에서 외래키를 가진 엔티티를 조회할 때, _
를 붙이는 네이밍 규칙이 있습니다.
예를 들어, StudyMember
엔티티에서 study
필드가 외래키를 가지고 있다면, 해당 필드의 이름은 study_id
로 작성해야 합니다.
이렇게 함으로써, JPA는 자동으로 외래키를 찾아 매핑하는 과정을 수행할 수 있습니다.
findByStudyId 메서드또한 StudyMember 엔티티에서 study_id 필드를 조회하는 방법입니다.
하지만, 필드명과 외래키 컬럼명이 일치하지 않는 경우에는, @JoinColumn
어노테이션을 사용하여 직접 매핑 정보를 지정해주어야 합니다. 따라서, _
를 포함하는 네이밍 규칙을 지키는 것이 좋습니다. 이렇게 함으로써, 코딩 컨벤션을 일관성 있게 유지할 수 있으며, 가독성도 높아집니다.
❗️ 이슈 번호
Closes #107
📝 구현 내용
findBy + (FK를 관리하는 Entity의 필드명에서 첫 글자를 대문자) + _ + (FK Entity의 식별자 필드명에서 첫 글자를 대문자)
🙇🏻♂️ 리뷰어에게 부탁합니다!
맡은 부분에 대한 Repository 수정 부탁드립니다.
💡 참고 자료