[Spring]회원관리_회원 서비스 개발

김피자·2023년 2월 1일
0

Spring

목록 보기
8/30
  • 비즈니스 요구사항
  • 회원 도메인과 리포지토리 만들기
  • 회원 리포지토리 테스트 케이스 작성**
  • 회원 서비스 개발
  • 회원 서비스

서비스 :
회원 리포지토리와 도메인을 활용해 실제 비즈니스 로직을 작성


파일 구조


회원가입 서비스

public Long join(Member member){
        validateDuplicateMember(member); // 중복 회원 검증 : 같은 이름이 있는 중복 회원X
        memberRepository.save(member);
        return member.getId();
    }

비즈니스 로직 구성 당시 중복 회원은 받지 않겠다는 설정 있었음
그래서 validateDuplicateMember라는 메소드를 통해 중복회원을 검열

private void validateDuplicateMember(Member member) {
    memberRepository.findByName(member.getName()) //Optional로 반환
            .ifPresent(m -> { //여기에 값이 있으면 동작
                throw new IllegalStateException("이미 존재하는 회원입니다");
            });
}

기존 방식에서는 if문을 통해 !null 이렇게 처리를 함
하지만 Optional로 객체를 한번 감싸서 반환하기 때문에
ifPresent 사용 가능

ifPresent : 해당 값이 있으면 아래 메소드가 동작하도록 함

orElseGet도 자주 사용함 > 값이 있으면 꺼내오고 없으면 아래 메소드를 실행해라

전체 회원 조회

public List<Member> findMembers(){
    return memberRepository.findAll();
}

아이디로 회원 조회

public Optional<Member> findOne(Long memberId){
    return memberRepository.findById(memberId);
}

전체 코드

package hello.hellospring.service;

import hello.hellospring.domain.Member;
import hello.hellospring.repository.MemberRepository;
import hello.hellospring.repository.MemoryMemberRepository;
import java.util.List;
import java.util.Optional;

public class MemberService {
    private final MemberRepository memberRepository = new MemoryMemberRepository();
    // 회원가입
    public Long join(Member member){
        validateDuplicateMember(member); // 중복 회원 검증 : 같은 이름이 있는 중복 회원X
        memberRepository.save(member);
        return member.getId();
    }
    private void validateDuplicateMember(Member member) {
        memberRepository.findByName(member.getName()) //Optional로 반환
                .ifPresent(m -> { //여기에 값이 있으면 동작
                    throw new IllegalStateException("이미 존재하는 회원입니다");
                });
        // orElseGet도 자주씀 = 값이 있으면 꺼내고 없으면 어떤 메소드를 실행해
        // 기존에는 if !null이면 이런식으로 갔다면
        // Optional이라는 이름으로 객체를 한번 감싸서 반환
        // 감싼 덕분에 Optional안의 ifPresent것을 사용할 수 있음
        // ctrl+t 리팩토링 관련 여러 기능들 단축키
    }
    // 전체 회원 조회
    public List<Member> findMembers(){
        return memberRepository.findAll();
    }

    // 아이디로 회원 조회
    public Optional<Member> findOne(Long memberId){
        return memberRepository.findById(memberId);
    }
}
profile
제로부터시작하는코딩생활

0개의 댓글