728x90
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard
📌 회원 도메인과 리포지토리 만들기
- domain 패키지에 Member 클래스 생성

- ALT + Insert 를 눌러서 getter setter까지 만들어준다.
public class Member {
private Long id; //시스템이 저장하는 id임.
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
- repository 패키지 생성하여 MemberRepository 인터페이스 생성

package hello.hellospring.repository;
import hello.hellospring.domain.Member;
import java.util.List;
import java.util.Optional;
public interface MemberRepository {
Member save(Member member);
Optional<Member> findById(Long id);
Optional<Member> findbyName(String name);
//Optional 는 find 했는데 null일 수 있는데 null이 반환될 때 Optional로 감싸서 null 반환
List<Member> findAll();
}
- MemoryMemberRepository 클래스 생성

public class MemoryMemberRepository implements MemberRepository{
private static Map<Long, Member> store = new HashMap<>();
private static long sequence = 0L;
@Override
public Member save(Member member) {
//멤버를 추가할 때 시퀀스 번호를 하나 올려준다.
member.setId(++sequence);
//아이디가 세팅되면 store에 저장 (Map에 저장됨)
store.put(member.getId(), member);
return member;
}
@Override
public Optional<Member> findById(Long id) {
//store에서 꺼낼건데 null일 수 있으니 Optional로 감싸준다.
//null이어도 감싸서 반환하면 클라이언트에서 작업 가능
return Optional.ofNullable(store.get(id));
}
@Override
public Optional<Member> findbyName(String name) {
return store.values().stream().filter(member -> member.getName().equals(name)).findAny();
//루프를 돌면서 member.getName()이 파라미터로 넘어온 name과 같은지 확인하고 같은 경우에만 필터링
//끝까지 찾았는데 없으면 Optional에 감싸져서 반환
}
@Override
public List<Member> findAll() {
//store.values() == 멤버들이 반환됨.
return new ArrayList<>(store.values());
}
}
728x90
'Java > [인프런] Spring 강의' 카테고리의 다른 글
[SpringBoot] #11 - 회원 서비스 개발 (0) | 2023.08.15 |
---|---|
[SpringBoot] #10 - 회원 리포지토리 테스트케이스 작성 (0) | 2023.08.10 |
[SpringBoot] #08 - 비즈니스 요구사항 정리 (0) | 2023.08.10 |
[SpringBoot] #07 - API (0) | 2023.08.10 |
[SpringBoot] #06 - MVC와 템플릿 엔진 (0) | 2023.08.10 |