[김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] 회원 관리 예제 - 백엔드 개발 - '회원 서비스 개발' 수강
This commit is contained in:
@@ -14,4 +14,5 @@
|
||||
## 회원 관리 예제 - 백엔드 개발
|
||||
- [비즈니스 요구사항 정리](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/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)
|
||||
33
SpringBoot-Introduction/Lectures/Lecture11.md
Normal file
33
SpringBoot-Introduction/Lectures/Lecture11.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# 회원 서비스 개발
|
||||
|
||||
---
|
||||
|
||||
## 회원 서비스
|
||||
- 회원 리포지토리와 도메인을 사용하는 실제 비즈니스 로직을 작성한다.
|
||||
|
||||
---
|
||||
|
||||
## ifPresent
|
||||
- `Optional`에서 `null`이 아닌 값이 있으면 정의된 로직이 동작한다.
|
||||
- `null`일 가능성이 있으면 `Optional`로 감싸주고 사용할 수 있다.
|
||||
|
||||
---
|
||||
|
||||
## 메서드 추출
|
||||
- `Ctrl + Alt + m`(window)
|
||||
- `Command + Option + m`(Mac)
|
||||
|
||||
---
|
||||
|
||||
## 리포지토리
|
||||
- 단순히 기계적으로 개발스럽게 용어들을 보통 선택한다.
|
||||
- 단순히 데이터베이스에 접근(데이터를 넣었다 뺐다)하는 역할을 수행한다.
|
||||
|
||||
---
|
||||
|
||||
## 서비스 클래스
|
||||
- 비즈니스에 가까운 용어를 사용해야 한다.
|
||||
- 비즈니스에 의존적으로 설계한다.
|
||||
- 비즈니스를 처리하는 역할을 수행한다.
|
||||
|
||||
---
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user