Member Class
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
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;
}
}
|
cs |
Interface MemberRepository
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
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> findBiyId(Long id);
Optional<Member> findBiyName(String name);
List<Member> findAll();
}
|
cs |
Class MemoryMemberRepository
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
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 hello.hellospring.domain.Member save(hello.hellospring.domain.Member member) {
member.setId(++sequence);
store.put(member.getId(), member);
return member;
}
@Override
public Optional<hello.hellospring.domain.Member> findBiyId(Long id) {
return Optional.ofNullable(store.get(id));
}
@Override
public Optional<hello.hellospring.domain.Member> findBiyName(String name) {
return store.values().stream()
.filter(member -> member.getName().equals(name))
.findAny();
}
@Override
public List<hello.hellospring.domain.Member> findAll() {
return new ArrayList<>(store.values());
}
}
|
cs |
Optional
Java8에서는 Optional<T> 클래스를 사용해 NPE를 방지할 수 있도록 도와준다. Optional<T>는 null이 올 수 있는 값을 감싸는 Wrapper 클래스로, 참조하더라도 NPE가 발생하지 않도록 도와준다. Optional 클래스는 아래와 같은 value에 값을 저장하기 때문에 값이 null이더라도 바로 NPE가 발생하지 않으며, 클래스이기 때문에 각종 메소드를 제공해준다.
https://dev-coco.tistory.com/178
'프로그래밍 > SpringMVC_기초' 카테고리의 다른 글
회원관리예제-4 (MemberService) (di,After&BeforeEach ) (0) | 2023.10.18 |
---|---|
회원관리 예제-3 (Test Case) (assertThat) (0) | 2023.10.14 |
회원관리 예제 -1 (0) | 2023.10.14 |
API (0) | 2023.10.14 |
MVC와 템플릿 엔진 (0) | 2023.10.13 |