Java/[인프런] Spring 강의
[SpringBoot] #09 - 회원 도메인과 리포지토리 만들기
냠냠쿠
2023. 8. 10. 22:32
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