[Spring] 스프링 입문 웹 개발 기초(9)
회원 도메인과 리포지토리 만들기
hellospring > domain 패키지 생성 > Member 클래스 생성
public class Member {
private Long 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;
}
}
Member 클래스에 id와 name을 만들고 Getter, Setter 추가해준다.
- hellospring에 repsitory 패키지 생성
- MemberRepository 인터페이스 생성
import mess.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);
List<Member> findAll();
}
- 회원을 저장한다.
- 아이디로 회원을 찾는다.
- 이름으로 회원을 찾는다.
- 저장되어 있는 모든 회원 리스트 반환한다.
구현체를 만들어주기 위해 MemoryMemberRepository 클래스 만들어준다.
메모리니까 저장을 어디엔가 해주어야한다. 그러기 위해 Map을 사용해서 회원의 아이디가 키이므로 Long과 Member객체로 만들어준다.
또한 sequence는 자동으로 올라가는 키값을 생성해주기 위한 변수이다.
이제 하나씩 해보도록 하겠다.
save
간단하게 member의 id를 sequence를 하나씩 올려주며 넣어준다.
findById
Optional.ofNullable을 사용하면 Optional으로 감싸서 null이 결과값으로 나와도 반환해줄 수 있다.
findByName
람다식으로 구현한다.
멤버를 계속 돌리면서 멤버에서 넘어온 파라미터와 같은 값인지 계속 확인해준다.
그리고 찾으면 반환한다.
하지만 끝까지 찾지 못하면 null이 반환된다.
findAll
store에 있는 value값 즉, Member을 모두 반환해준다.
import mess.hellospring.repository.MemberRepository;
import java.util.*;
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.put(member.getId(), member);
return member;
}
@Override
public Optional<Member> findById(Long id) {
return Optional.ofNullable(store.get(id));
}
@Override
public Optional<Member> findByName(String name) {
return store.values().stream()
.filter(member -> member.getName().equals(name))
.findAny();
}
@Override
public List<Member> findAll() {
return new ArrayList<>(store.values());
}
}
Leave a comment