본문 바로가기

:: System Log

스프링 입문 강의 노트 #9. 백엔드 개발 - 회원 도메인과 리포지토리 만들기

> 이전글 읽기 

2022.02.22 - [:: System Log] - 스프링 입문 강의 노트 #8. 백엔드 개발 - 비즈니스 요구사항 정리

 

스프링 입문 강의 노트 #8. 백엔드 개발 - 비즈니스 요구사항 정리

> 이전 글 읽기 : 2022.02.21 - [:: System Log] - 스프링 입문 강의 노트 #7. 웹 개발 기초 - API 이전글 읽기 2022.02.21 - [:: System Log] - 스프링 입문 강의 노트 #6. 웹 개발 기초 - MVC와 템플릿 엔진 이..

everythingiok.tistory.com

 

회원 도메인과 리포지토리 만들기
 
1. 도메인을 위한 패키지 생성
 - hello.helllospring.domain
 - domain 패키지 내 member class 생성 
package hello.hellospring.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;
    }
}
2. Repository 패키지 생성
- hello.helllospring.repository
- MemberRepository Interface 생성
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); // 저장소에서 id로 고객 검색
    Optional<Member> findByName(String name);   // 저장소에서 이름으로 고객 검색
    List<Member> findAll(); // 저장소에서 전체 목록 반환
}
 *Optional // 널을 처리하는 방법. 옵셔널로 감싸서 반환할 수있음. 자바8에 있는 기능
 
- MemoryMemberRepository Class 생성
   위에서 작성한 리포지토리 인터페이스 implements 하여 실제 구현
package hello.hellospring.Repository;

import hello.hellospring.domain.Member;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Optional;

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());
    }
}
* 옵셔널로 널값을 감싸서 넘겨주면 클라이언트에서 처리가 가능하다

 

- 구현된 내용은 JUnit을 통해 테스팅 가능, 다음 강의에서 이어서 진행

 

> 다음글 읽기 : 

2022.02.23 - [:: System Log] - 스프링 입문 강의 노트 #9. 백엔드 개발 - 회원 도메인과 리포지토리 만들기

 

스프링 입문 강의 노트 #9. 백엔드 개발 - 회원 도메인과 리포지토리 만들기

> 이전글 읽기 2022.02.22 - [:: System Log] - 스프링 입문 강의 노트 #8. 백엔드 개발 - 비즈니스 요구사항 정리 이전 글 읽기 : 2022.02.21 - [:: System Log] - 스프링 입문 강의 노트 #7. 웹 개발 기초 - API..

everythingiok.tistory.com