Service는 Repository의 구현체로 Repository와 거의 비슷하다. 각 엔티티에 필요한 기본적인 메소드(save, find, delete)들을 구현하고 추가적으로 필요한 메소드들을 구현했다.
<Member>
package com.project.karrot.service;
import com.project.karrot.domain.Member;
import com.project.karrot.repository.MemberRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.util.List;
import java.util.Optional;
@Transactional
public class MemberService {
private final MemberRepository memberRepository;
public MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
public Long join(Member member) {
validateDuplicateMember(member); // 닉네임 중복 회원 검증
memberRepository.save(member);
memberRepository.flush();
return member.getId();
}
private void validateDuplicateMember(Member member) {
memberRepository.findByNickName(member.getNickName())
.ifPresent(m -> {
throw new IllegalStateException("이미 존재하는 닉네임입니다.");
});
}
public Optional<Member> find(Long memberId) {
return memberRepository.findById(memberId);
}
public Optional<Member> findByName(String name) {
return memberRepository.findByName(name);
}
public Optional<Member> findByNickName(String nickName) {
return memberRepository.findByNickName(nickName);
}
public Member login(String email, String password) { // 이메일 - 패스워드 검증
return memberRepository.findByEmail(email)
.filter(member -> member.getPassword().equals(password))
.orElse(null); }
public List<Member> findMembers() {
return memberRepository.findAll();
}
public void remove(Member member) {
memberRepository.delete(member);
}
}
'개인 프로젝트' 카테고리의 다른 글
3 - (5). 주요 코드 - View (0) | 2022.01.23 |
---|---|
3 - (4). 주요 코드 - Controller (0) | 2022.01.23 |
3 - (2). 주요 코드 - Repository (0) | 2022.01.23 |
3 - (1). 주요 코드 - 엔티티 (0) | 2022.01.23 |
2. ER Diagram (0) | 2022.01.23 |