domain/Member.class
package com.danny.learningspring.domain;
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;
}
}
- 식별자로 사용될 시스템이 정하는 id
- name은 회원 이름
repository/MemberRepository.interface
package com.danny.learningspring.repository;
import com.danny.learningspring.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();
}
- save - 회원가입
- findbyId - 회원정보 id로 조회
- findbyName - 회원정보 name로 조회
- findAll - 모든 회원 조회
- Optional - null값을 처리하는 방법중 하나
repository/MemoryMemberRepository.class
package com.danny.learningspring.repository;
import com.danny.learningspring.domain.Member;
import org.springframework.stereotype.Repository;
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());
}
public void clearStore(){
store.clear();
}
}
- 인터페이스의 구현체
- implements MemberRepository를 해주고 option+enter로 method들도 implements해줌
- save할 때, store에 생성한 sequence와 parameter로 받은 member를 넣어줌
- findById를 할 때 null이여도 반환할 수 있게 Optional.ofNullable()로 감싸줌
- findByName할 때 parameter로 받은 name과 일치하는지 loop를 돌며 찾음 .filter(member -> member.getName().equals(name)), 마찬가지로 Optional로 감싸줌
- findAll - ArrauList타입으로 리턴
'Spring 입문' 카테고리의 다른 글
스프링MVC 입문11 (0) | 2022.11.10 |
---|---|
스프링MVC 입문10 (0) | 2022.11.10 |
스프링MVC 입문08 (0) | 2022.11.09 |
스프링MVC 입문07 (0) | 2022.11.09 |
스프링MVC 입문06 (0) | 2022.11.09 |
댓글