공부이야기/[Spring.210428~]

[스프링 입문] 회원 서비스 개발

Nameless 2021. 5. 1. 13:21

Repository 

=> findById, findByName, save 등 ... 

단순히 저장소에 넣었다뺐다하는 느낌 것

기계적, 개발적임

 

Service

=> join, findMembers

이름이 비즈니스에 가깝다. 비즈니스 처리.

Service는 비즈니스에서 가져오는 용어를 써야 개발자, 기획자 모두 의사소통 가능해짐.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
public class MemberService {
    private final MemberRepository memberRepository = new MemoryMemberRepository();
 
    //회원 가입, 비즈니스 로직에서 같은 이름의 회원 x
    public Long join(Member member){
 
        validateDuplicateMember(member); //중복회원검증
        memberRepository.save(member);
        return member.getId();
 
        /*
            + ifPresent : null이 아니라 어떤 값이 있으면 로직 동작,
              기존에는 if null이었지만 Optional로 감싸면 Optional 안에 있는 여러 객체 사용가능(null일 가능성있으면 사용)
        result.ifPresent(m -> {
            throw new IllegalStateException("이미 존재하는 회원입니다.");
        });
        */
 
    }
 
    private void validateDuplicateMember(Member member) {
        memberRepository.findByName(member.getName())
                .ifPresent(member1 -> {
                    throw new IllegalStateException("이미 존재하는 회원입니다.");
                });
    }
 
    //전체회원조회
    public List<Member> findMembers(){
        return memberRepository.findAll();
    }
 
    public Optional<Member> findOne(Long memberId){
        return memberRepository.findById(memberId);
    }
}
cs