카테고리 없음
[내일배움캠프] 1월 26일 목요일 TIL 회고록
tft4rollz
2023. 1. 26. 23:57
인프런에서 김영한 강사님 강의를 들었다.
아직 스프링이 미숙해서 입문 강의를 들었다.
강의를 들으면서 신기했던 점이 , 개인 과제나 프로젝트를 진행했을때는 Repository에는 findById나 findByName, findAll 메서드를 만들고 서비스에서 기능을 사용했는데 강의에서는 Repository 에서 메서드를 만든 후 기능을 구현했다. 처음 본 것도 있고 되게 신기해서 따로 적어두었다.
먼저 MemberRepository 에는 유저 저장기능, id로 찾기, 이름으로 찾기, 전부 찾기 메서드를 만들고,
public interface MemberRepository {
Member save(Member member);
Optional<Member> findById(Long id);
Optional<Member> findByName(String name);
List<Member> findAll();
}
MemberRepository를 상속받는 MemoryMemberRepository를 만들었다.
public class MemoryMemberRepository implements MemberRepository{
먼저, 유저를 저장하는 기능을 만드셨다.
여기서 Map을 거의 처음봐서 구글링을 대충 해서 적어두었다.
Map<Long,member> 를 받는 HashMap store 를 선언했고, long 타입 sequence 를 선언했다.
멤버 저장하는 기능을 설명하면,
save 메서드가 실헹되면 sequence 가 ++ 된다. 그리고 store에 put 기능을 사용해서 멤버의 id와 , 멤버가 저장되고 멤버를 리턴시킨다.
// map : 사전과 비슷하다. 사람을 예로 들면 이름: 홍길동 , 생일 : 몇월 몇일 이런식으로 대응관계를 쉽게 표현해주는 자료형
// 예: Long : 1L, member : "홍길동, Long: 2L, member : 임꺽정
private static Map<Long, Member> store = new HashMap<>();
// 시퀀스: 0,1,2 처럼 순서대로 올라간다.
private static long sequence = 0L;
// 멤버 저장하는 기능
@Override
public Member save(Member member) {
// sequence 값을 하나 올려준다.
member.setId(++sequence);
// store에 put 기능을 사용하여 member.getid()와 member 를 넣어준다.
store.put(member.getId(),member);
// member를 리턴한다.
return member;
}
id 찾는 기능
// id로 찾기
@Override
public Optional<Member> findById(Long id) {
// store.get(id)로 꺼내는데 결과가 null이 반환 될 가능성이 있으므로
// Optional.ofNullable로 감씨줘서 null이 반환되지 않게 해준다.
return Optional.ofNullable(store.get(id));
}
이름으로 찾는 기능
// name으로 찾기
@Override
public Optional<Member> findByName(String name) {
// 람다식 사용 values(), stream()으로 루프를 돌린다.
return store.values().stream()
// .filter 를 이용해서 member에서 member.getName이 파라미터로 넘어온 name이랑 같은지 확인한다.
.filter(member -> member.getName().equals(name))
// 찾으면 반환, (Optinal)로
.findAny();
}
전부 찾는 기능
@Override
public List<Member> findAll() {
// 실무에서는 list를 많이 써서 ArrayList를 만들어서 store에 values를 넣어준다.
return new ArrayList<>(store.values());
}
확실히 되게 유명한 분이시다보니 강의가 재밌다. 내일도 이어서 들어야겠다.