오늘이라도
[III. 회원 관리 예제 - 백엔드 개발] 9. 회원 도메인과 리포지토리 만들기 본문
반응형
https://github.com/upcake/hello-spring
1. 도메인, 리포지토리 클래스 파일 작성
package com.upcake.hellospring.domain;
public class Member {
private Long id; //시스템이 정하는 key 값
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.class
package com.upcake.hellospring.repository;
import com.upcake.hellospring.domain.Member;
import java.util.Optional;
public interface MemberRepository {
Member save(Member member);
Optional<Member> findById(Long id); //Java 8에 추가된 null을 다루기 위한 기능, id가 null이면 null을 반환한다
Optional<Member> findByName(String name);
List<Member> findAll();
}
- MemberRepository.class
package com.upcake.hellospring.repository;
import com.upcake.hellospring.domain.Member;
import java.util.*;
public class MemoryMemberRepository implements MemberRepository {
private static Map<Long, Member> store = new HashMap<>();
private static long sequence = 0L; //0 1 2 키 값 생성해주는 것
@Override
public Member save(Member member) {
member.setId(++sequence);
store.put(member.getId(), member);
return member;
}
@Override
public Optional<Member> findById(Long id) {
//옛날에는 null일 가능성이 있어도 그냥 반환했는데, 요즘에는 Optional.ofNullable()로 감싸준다.
return Optional.ofNullable(store.get(id));
}
@Override
public Optional<Member> findByName(String name) {
//store에서 loop를 돌면서 하나라도 찾아지면 바로 반환
return store.values().stream()
.filter(member -> member.getName().equals(name))
.findAny();
}
@Override
public List<Member> findAll() {
return new ArrayList<>(store.values());
}
}
- MemoryMemberRepository.class
반응형
'인프런 > 스프링 입문 (김영한)' 카테고리의 다른 글
[III. 회원 관리 예제 - 백엔드 개발] 11. 회원 서비스 개발 (0) | 2021.12.28 |
---|---|
[III. 회원 관리 예제 - 백엔드 개발] 10. 회원 리포지토리 테스트 케이스 작성 (0) | 2021.12.28 |
[III. 회원 관리 예제 - 백엔드 개발] 8. 비즈니스 요구사항 정리 (0) | 2021.12.28 |
[II. 스프링 웹 개발 기초] 7. API (0) | 2021.12.28 |
[II. 스프링 웹 개발 기초] 6. MVC와 템플릿 엔진 (0) | 2021.12.23 |