본문 바로가기
개발/spring

도메인 레퍼지토리 서비스

by 향유 2022. 11. 25.

학습자료

https://www.youtube.com/watch?v=0_oeeYDLSjM&list=PLumVmq_uRGHgBrimIp2-7MCnoPUskVMnd&index=9

https://www.youtube.com/watch?v=Gul8sv7cf8g&list=PLumVmq_uRGHgBrimIp2-7MCnoPUskVMnd&index=10

 

 

 

도메인 : 객체를  입력 출력 저장관리

 

레퍼지토리 : 저장소 (회원 도메인 저장하는 저장소)

인터페이스 제작 후 상속

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) { //이름 파라미터로 넘기며 저장 요청시 id 증가시키며 저장값 반환
        member.setId(++sequence);
        store.put(member.getId(),member);
        return member;
    }

    @Override
    public Optional<Member> findById(Long id) { //해당아이디 존재 체크 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();
    }

    @Override
    public List<Member> findAll() { //저장된 맴버객체 모든 변수 반환
        return new ArrayList<>(store.values());
    }

    public void clearStore(){ //초기화
        store.clear();
    }


}

 


    @Test
    public void save(){
        Member member =new Member();
        member.setName("spring");

        repository.save(member);
        Member result =repository.findById(member.getId()).get();
//        System.out.println("result="+(result==member));
        Assertions.assertEquals(member,result);
        //Assertions.assertThat(member).isEqualTo(result);
    }

소스 검증 방법

 

result + true 가 나오거나 오류가 안나오면 정상 

 


public void clearStore(){ //초기화
    store.clear();
}

레퍼지 토리 초기화 함수 추가

 

package hello.hellospring.repository;

import hello.hellospring.domain.Member;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

import java.util.List;

public class MemoryMemberRepositoryTest {

    MemoryMemberRepository repository = new MemoryMemberRepository();

    @AfterEach
    public void afterEach(){
        repository.clearStore();
    }


    @Test
    public void save(){
        Member member =new Member();
        member.setName("spring");

        repository.save(member);
        Member result =repository.findById(member.getId()).get();
//        System.out.println("result="+(result==member));
//        Assertions.assertEquals(member,result);
        //Assertions.assertThat(member).isEqualTo(result);
    }

    @Test
    public void findByName(){
        Member member1 = new Member();
        member1.setName("spring1");
        repository.save(member1);

        Member member2 = new Member();
        member2.setName("spring2");
        repository.save(member2);

        Member result = repository.findByName("spring1").get();
        Assertions.assertEquals(member1,result);
//        Assertions.assertEquals(member2,result);
    }

    @Test
    public void findAll(){
        Member member1 = new Member();
        member1.setName("spring1");
        repository.save(member1);

        Member member2 = new Member();
        member2.setName("spring2");
        repository.save(member2);

        List<Member> result = repository.findAll();
        Assertions.assertEquals(result.size(),2);


    }

}

댓글