1. 회원 도메인과 리포지토리 만들기
- 리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리
- 도메인: 회원/주문/쿠폰 처럼 데이터베이서에 저장하고 관리되는 도메인 객체
package hello.hellospring.domain;
public class Member {
private Long id;
private String name;
public Long getId() {
return id;
}
public String getName() {
return name;
}
public void setId(Long id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
}
<회원관리 리포지토리(인터페이스)>
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);
List<Member> findAll();
}
<회원관리 리포지토리(구현)>
package hello.hellospring.repository;
import hello.hellospring.domain.Member;
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); //ID 세팅
store.put(member.getId(),member); //스토어에 저장
return member;
}
@Override
public Optional<Member> findById(Long id) {
return Optional.ofNullable(store.get(id)); //null여도 반환 가능
}
@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());
}
}
2. TEST CASE
작성한 클래스가 동작하는지 확인하기 위해서는 TEST CASE를 사용한다.
JUnit이라는 프레임워크로 테스트를 실행한다. (java test framework)
- 그러나 매번 System.out.println();을 사용해서 테스트케이스를 진행할 수 없기 때문에 'Assertions.asserEquals(기대하는 값, 실제값);' 을 사용해 진행하도록 한다.
- 두 값이 같을 땐 문제 없이 아래와 같이 초록불이 뜨지만 기대값과 다른 실제값이 들어갈 땐 AssertionFailError가 뜨게 된다.
'Back-End > Spring' 카테고리의 다른 글
[SpringBoot][스프링 입문] - 4.1 컴포넌트 스캔과 자동 의존관계 설정 (0) | 2021.12.25 |
---|---|
[SpringBoot][스프링 입문] - 3.4 회원 서비스 개발 / 3.5 회원 서비스 테스트 (0) | 2021.12.23 |
[SpringBoot][스프링 입문] - 3.1 비니지스 요구사항 정리 (0) | 2021.12.23 |
[SpringBoot][스프링 입문] - 2장 스프링 웹 개발 기초 <정리> (0) | 2021.12.21 |
[SpringBoot][스프링 입문] - 2.3 API (0) | 2021.12.21 |