public Long join(Member member) {
// 같은 이름이 있는 중복 회원x
Optional<Member> result = memberRepository.findByName(member.getName());
result.ifPresent(m -> {
throw new IllegalStateException("이미 존재하는 이름입니다.");
});
memberRepository.save(member);
return member.getId();
}
위의 코드는
public Long join(Member member) {
// 같은 이름이 있는 중복 회원x
memberRepository.findByName(member.getName()).ifPresent(m -> {
throw new IllegalStateException("이미 존재하는 이름입니다.");
});
memberRepository.save(member);
return member.getId();
}
로 간결하게 바꿀 수 있다.
이렇게는 하나의 로직이 나오는데 이럴 때는 메서드로 만들어주는 게 좋다.
public Long join(Member member) {
validateDuplicateMember(member);// 중복 회원 검증
memberRepository.save(member);
return member.getId();
}
private void validateDuplicateMember(Member member) {
memberRepository.findByName(member.getName()).ifPresent(m -> {
throw new IllegalStateException("이미 존재하는 이름입니다.");
});
}
쨔란~
// 전체 회원 조회
public List<Member> findMembers() {
return memberRepository.findAll();
}
// 한 개의 회원 아이디 가져오기
public Optional<Member> findOne(Long memberId) {
return memberRepository.findById(memberId);
}
리포지토리는 단순히 데이터를 넣고 빼는 느낌이 강함.
서비스 클래스는 비즈니스 네이밍이 강함
서비스 클래스는 비즈니스에 가까운 용어를 써야 함
리포지토리는 기계적으로 용어를 선택함