Skip to content
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

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

HanKwanJin
Copy link
Contributor

@HanKwanJin HanKwanJin commented Mar 3, 2023

❗️ 이슈 번호

Closes #107



📝 구현 내용

  • Study 관련 Repository 외래키 조회 네이밍 수정했습니다.
    findBy + (FK를 관리하는 Entity의 필드명에서 첫 글자를 대문자) + _ + (FK Entity의 식별자 필드명에서 첫 글자를 대문자)


image

image

🙇🏻‍♂️ 리뷰어에게 부탁합니다!

  • 현재 Study관련 작업을 하기 위해 Study 관련 Repository만 수정했습니다.
    맡은 부분에 대한 Repository 수정 부탁드립니다.


💡 참고 자료

@HanKwanJin HanKwanJin added the ♻️ refactor 리팩토링 작업 label Mar 3, 2023
@HanKwanJin HanKwanJin self-assigned this Mar 3, 2023
Copy link
Contributor

@nathan29849 nathan29849 left a 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());
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이렇게 되면 굳이 Study 도메인 객체를 찾아오지 않고도 조회가 되니 쿼리를 줄일 수 있어 좋은 것 같아요!
너무 좋았습니다!

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

혹시 쿼리도 실제로 잘 나가는지 확인해보셨나요? 갑자기 궁금해서 질문 남깁니다!

Copy link
Contributor Author

@HanKwanJin HanKwanJin Mar 4, 2023

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 어노테이션을 사용하여 직접 매핑 정보를 지정해주어야 합니다. 따라서, _를 포함하는 네이밍 규칙을 지키는 것이 좋습니다. 이렇게 함으로써, 코딩 컨벤션을 일관성 있게 유지할 수 있으며, 가독성도 높아집니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
♻️ refactor 리팩토링 작업
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[refactor] Spring data JPA - 외래키 조회 방법
2 participants