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

[BE] Repository에서 Optional로 반환하는 메서드를 개선한다. #594

Closed
seokjin8678 opened this issue Oct 31, 2023 · 4 comments
Closed
Labels
BE 백엔드에 관련된 작업 ⚙️ 리팩터링 리팩터링에 관련된 작업 🙋‍♀️ 제안 제안에 관한 작업

Comments

@seokjin8678
Copy link
Collaborator

✨ 세부 내용

대부분의 로직에서 Repository로 엔티티를 찾는 메서드에 orElseThrow 메서드를 사용하고 있습니다.
하지만 공용으로 자주 쓰이는 Repository에서(MemberRepository) 해당 로직이 중복되는 경우가 많기 때문에 default 메서드를 사용하여 중복을 개선합니다.

public interface MemberRepository extends JpaRepository<Member, Long> {

    default Member getOrThrow(Long id) {
        return findById(id)
            .orElseThrow(() -> new NotFoundException(ErrorCode.MEMBER_NOT_FOUND));
    }
}

이때 해당 메서드의 네이밍을 무엇을 하는게 좋을지 논의가 필요합니다.

⏰ 예상 소요 시간

1시간

@seokjin8678 seokjin8678 added BE 백엔드에 관련된 작업 ⚙️ 리팩터링 리팩터링에 관련된 작업 🙋‍♀️ 제안 제안에 관한 작업 labels Oct 31, 2023
@carsago
Copy link
Collaborator

carsago commented Nov 18, 2023

getByID는 어떤가요? 전부 다 한번에 바꿀 수도 있고 하나씩 바꾸어가는 것도 좋을 것 같네요.

@seokjin8678
Copy link
Collaborator Author

getByID는 어떤가요? 전부 다 한번에 바꿀 수도 있고 하나씩 바꾸어가는 것도 좋을 것 같네요.

getById라는 메서드는 이미 JpaRepository에 구현 메소드로 정의가 되어 있더군요.
게다가 @Deprecated 처리까지 된 상태라서리...

그리고 밑의 링크는 제이슨이 올리신 이슈 내용입니다.
woowacourse/service-apply#565 (comment)
결론으로 getOrThrow 라는 네이밍을 사용하는 것 같네요.

저희 프로젝트에서 코틀린을 사용하지 않으니, get 이라는 메서드 이름을 사용해도 괜찮을 것 같긴 한데...
명시적으로 하려면 getOrThrow가 명확한 것 같네요.

@carsago
Copy link
Collaborator

carsago commented Nov 19, 2023

getOrThrow가 더 명시적이네요. 어떠한 명칭이든 우리가 이해하기만 하면 괜찮다고 생각합니다.


11월 20일 오후 6시 30분 추가

이렇게 하는 것을 컨벤션으로 모두 동의한다면 PR에서 건드리는 클래스들에 겸사겸사 한두개 같이 수정해도 좋겠네요.

@seokjin8678
Copy link
Collaborator Author

close #648

@github-project-automation github-project-automation bot moved this from Todo to Done in 2023-festa-go Feb 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
BE 백엔드에 관련된 작업 ⚙️ 리팩터링 리팩터링에 관련된 작업 🙋‍♀️ 제안 제안에 관한 작업
Projects
Status: Done
Development

No branches or pull requests

2 participants