Spring 입문 - 회원관리 예제 .백엔드 개발

박경희·2023년 7월 25일
0

공부를 해보자

목록 보기
20/40
post-thumbnail

김영한님의 스프링 입문 강의를 들으며 그동안 헷갈렸던 부분을 정확하게 알기 실습해보며 메모한 것이다.

  • 참고 - 김영한님 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
  • 컨트롤러: 웹 MVC의 컨트롤러 역할 서비스: 핵심 비즈니스 로직 구현
  • 리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리
  • 도메인: 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨

1. member 객체 생성

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.MemberRepositofy

3. 구현체를 만들자. MemoryMemberRepository를 생성해서 implements MemberRepository를 받음.

  • 맥 - option + enter를 눌러서

이제 구현을 해보자~~!

  • member.setId(++sequence); => 스토어에 넣기 전에 id값을 세팅해줌. 이름은 넘어온 상태라고 보면 된다.
  • Member안에 들어가 보면 String name 이 있다. 회원가입할 때 고객이 적는 이름이 여기에 저장되는 것.
  • id는 시스템이 저장을 할 때 등록되는, 시스템이 정해주는 것.
    그 후에 스토어에 put해서 저장해줌. 그리고 그 스펙에 따른 결과를 반환 (->return member;)

  • 그런데 찾은 결과가 없으면 어떻게 될까?
    -> 없으면 null이거나 그러겠죠~? ===> null이 반환될 가능성이 있으면 Optional로 감싸준다.

  • 이렇게 해주면 store.get(id) 이 결과가 null이여도 감쌀 수 있다. 이렇게 감싸서 반환을 해주면 클라이언트에서 뭔가 할수가 있는 상태가 된다고 한다!
 @Override
    public Optional<Member> findByName(String name) {
        return store.values().stream()                          
                .filter(member -> member.getName().equals(name)) // 람다 
                .findAny(); // 찾으면 반환해줌. 
    }
  • stream -> 루프를 돌리는 것.
  • 람다 => member에서 member.getName()이 파라미터로 넘어온 name이랑 같은지 확인.
    같은 경우에만 필터링 된다.
  • findAny는 하나로도 찾는 거다. 루프를 다 돌면서 (map에서 돌면서) 하나 찾아지면 그걸 그냥 반환하는 것. 그런데 끝까지 돌렸는데도 없으면 옵셔널에 null이 포함되서 반환이 되는 것.

구현 끝!!


0개의 댓글

Powered by GraphCDN, the GraphQL CDN