[김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] 회원 관리 예제 - 백엔드 개발 - '회원 서비스 개발' 수강

This commit is contained in:
banjjoknim
2020-12-22 20:16:13 +09:00
parent fd18326e5e
commit 9c025243f2
3 changed files with 79 additions and 1 deletions

View File

@@ -15,3 +15,4 @@
- [비즈니스 요구사항 정리](https://github.com/banjjoknim/TIL/blob/master/SpringBoot-Introduction/Lectures/Lecture08.md) - [비즈니스 요구사항 정리](https://github.com/banjjoknim/TIL/blob/master/SpringBoot-Introduction/Lectures/Lecture08.md)
- [회원 도메인과 리포지토리 만들기](https://github.com/banjjoknim/TIL/blob/master/SpringBoot-Introduction/Lectures/Lecture09.md) - [회원 도메인과 리포지토리 만들기](https://github.com/banjjoknim/TIL/blob/master/SpringBoot-Introduction/Lectures/Lecture09.md)
- [회원 리포지토리 테스트 케이스 작성](https://github.com/banjjoknim/TIL/blob/master/SpringBoot-Introduction/Lectures/Lecture10.md) - [회원 리포지토리 테스트 케이스 작성](https://github.com/banjjoknim/TIL/blob/master/SpringBoot-Introduction/Lectures/Lecture10.md)
- [회원 서비스 개발](https://github.com/banjjoknim/TIL/blob/master/SpringBoot-Introduction/Lectures/Lecture11.md)

View File

@@ -0,0 +1,33 @@
# 회원 서비스 개발
---
## 회원 서비스
- 회원 리포지토리와 도메인을 사용하는 실제 비즈니스 로직을 작성한다.
---
## ifPresent
- `Optional`에서 `null`이 아닌 값이 있으면 정의된 로직이 동작한다.
- `null`일 가능성이 있으면 `Optional`로 감싸주고 사용할 수 있다.
---
## 메서드 추출
- `Ctrl + Alt + m`(window)
- `Command + Option + m`(Mac)
---
## 리포지토리
- 단순히 기계적으로 개발스럽게 용어들을 보통 선택한다.
- 단순히 데이터베이스에 접근(데이터를 넣었다 뺐다)하는 역할을 수행한다.
---
## 서비스 클래스
- 비즈니스에 가까운 용어를 사용해야 한다.
- 비즈니스에 의존적으로 설계한다.
- 비즈니스를 처리하는 역할을 수행한다.
---

View File

@@ -0,0 +1,44 @@
package hello.springintroduction.service;
import hello.springintroduction.domain.Member;
import hello.springintroduction.repository.MemberRepository;
import hello.springintroduction.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(mem -> {
throw new IllegalArgumentException("이미 존재하는 회원입니다.");
});
}
/*
* 전체 회원 조회
*/
public List<Member> findMembers() {
return memberRepository.findAll();
}
/*
* 아이디로 회원 조회
*/
public Optional<Member> findOne(Long memberId) {
return memberRepository.findById(memberId);
}
}