8. 회원 서비스 개발

Bummy·2023년 4월 27일
0
post-thumbnail

service 패키지를 새로 만들어주고 MemberSerive 클래스를 구현해준다.

MemberService

package hello.hellospring.sevice;

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
        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);
    }
}

Join 메소드

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

private void validateDuplicateMember(Member member) {
        memberRepository.findByName(member.getName())
                .ifPresent(m -> {
                    throw new IllegalStateException("이미 존재하는 회원입니다.");
                });
    }

회원 가입을 위해서 join 메소드를 만들어주었다.

중복 회원이 있을 경우 회원가입이 불가하도록 로직을 만들어야한다.

강의에서는 해당 기능을 새로운 메소드로 만들었다.

기존의 코드에서는 if문을 써서 null이 아닐 경우 이미 존재하는 회원이라고 안내할 수 있었지만

findByname에서 return 할 때 Optinal 타입으로 한번 더 감싸서 return 시키기에 ifPresent와 IllegalStateException 등을 사용할 수 있다.

보다 더 간편하고 효율적으로 코드를 작성할 수 있게 되었다.

전체 회원 조회는 이미 repository에서 기능을 만들어놓았기에 호출해서 사용했다.

0개의 댓글