Notice
Recent Posts
Recent Comments
Link
It won't hurt to try
[스프링 입문]10.회원 도메인과 리포지토리 만들기 본문
디렉토리 구조
아직은 적응이 안되는 디렉토리 구조이다.
controller
- 웹어플리케이션 서버로부터 신호가 전달되어 오는 곳
domain
- 저장소에 데이터를 저장하기 위한 오브젝트라고 생각하면 쉬울것 같다.
- 우리가 흔히 말하는 getter/setter구조로 되어있는 경우가 많다.
repository
- 저장소의 데이터를 CRUD하기 위한 처리 내용이 들어간다.
(예를 들면 데이터 저장, 수정, 열람 등) - 우리는 아직 어떠한 저장소를 사용할지 정해지지 않았기 때문에 일단 인터페이스를 구현하는 방식으로 한다.
소스 살펴보기
package hello.hellospring.repository;
import hello.hellospring.domain.Member;
import java.util.*;
public class MemoryMemberRepository implements MemberRepository {
// 실무에서는 동시성문제(멀티쓰레드)로 ConcurrentHashMap을 사용하는 경우가 많다.
private static Map<Long, Member> store = new HashMap<>();
// 실무에서는 동시성문제(멀티쓰레드)로 AtomicLong을 사용하는 경우가 많다.
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());
}
}
- Optional : swift공부할 때 익혔던 개념이라서 친숙했다. java의 경우는 8버젼부터 사용되고 있다고 한다. 값에 null이 올경우가 있을때 사용한다. return할때 Optional.ofNullable을 사용한다.
300x250
300x250
'JAVA > 스프링 입문' 카테고리의 다른 글
[스프링 입문]12.회원 서비스 개발 (0) | 2021.08.05 |
---|---|
[스프링 입문]11.회원 리포지토리 테스트 케이스 작성 (0) | 2021.08.01 |
[스프링 입문]9.비즈니스 요구사항 정리 (0) | 2021.08.01 |
[스프링 입문]8.API (0) | 2021.08.01 |
[스프링 입문]7.MVC와 템플릿 엔진 (0) | 2021.08.01 |
Comments