본문 바로가기
공부 및 활동/스프링 강의 정리

(회원 관리 예제) 회원 서비스 개발

by KChang 2021. 9. 26.

서비스 클래스 : 메소드 name, business에서 사용되는 용어를 사용해야 한다.

  • 이유 : 개발자, 기획자에서 어떠한 로직이 오류가 발생할 때 서비스 클래스에서 쉽게 찾을 수 있다.

repository : 메소드 name, 기계적 용어를 사용한다.

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){
        // 같은 이름이 있는 중복 회원 x
//        Optional<Member> result = memberRepository.findByName(member.getName());
//        result.ifPresent(m->{
//            throw new IllegalStateException("이미 존재하는 회원입니다.");
//
//        });
        validateDuplicateMethod(member);   // 중복 회원 검증


        memberRepository.save(member);
        return member.getId();
    }

    private void validateDuplicateMethod(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);
    }
}

댓글