Spring
[Spring] 웹 어플리케이션 계층 구조 예시 (회원 관리)
hyerm_2
2022. 3. 16. 15:58
반응형
SMALL
간단한 회원 관리 예제를 통해 앞서 공부했던 Web Application 계층 구조에 대해 복습하자.
각 회원은 간단하게 회원 id, 이름을 가지고 있다고 가정하고,
기능은 회원을 새로 등록, 조회 하는 기능이 있다고 예를 들자.
우선, Entity Class라고도 불리는 Domain을 설정하자.
"Domain" 은 DTO 처럼 set, get 함수가 존재한다.
package example.spring.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;
}
}
다음으론 "Repository"를 설정하자.
이 Repository는 interface로 설정한다.
package.example.spring.repository;
import example.spring.domain.Member;
import java.util.List;
import java.util.Optional;
public interface MemberRepository {
Member save(Member member);
Optional<Member> findById(Long id);
Optional<Member> findByName(String name);
List<Member> findAll();
}
위의 Repository를 구현하는 "Repository 메모리 구현체"를 설정하자.
이것은 Repository Interface 내 함수의 기능 코드들이 적혀 있다.
package example.spring.repository;
import example.spring.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 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 List<Member> findAll(){
return new ArrayList<>(store.values());
}
@Override
public Optional<Member> findByName(String name) {
return store.values().stream()
.filter(member -> member.getName().equals(name))
.findAny();
}
public void clearStore() {
store.clear();
}
}
반응형
LIST