Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Java
- 힙 자바스크립트
- 자바스크립트
- 기지국 설치 js
- 부녀회장이 될 테야
- 1389번 케빈 베이컨의 6단계 법칙
- 알고리즘 수업-깊이 우선 탐색1
- 백준 2638번
- 1937번 욕심쟁이 판다
- 2275번
- ssh
- 13023번 ABCDE
- 24480번
- 리덕스
- 기지국 설치 자바스크립트
- 백준
- Redux
- level0
- 백준 1068
- 백준 13023번
- 우선순위 큐 자바스크립트
- 백준 1068번 트리
- React
- level1
- 2638번 치즈
- JavaScript
- 알고리즘
- dfs
- 1303번
- 프로그래머스
Archives
- Today
- Total
코딩왕랄프👊🏻
[Spring] 웹 어플리케이션 계층 구조 예시 (회원 관리) 본문
반응형
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
'Spring' 카테고리의 다른 글
[JPA] @Id 어노테이션 (0) | 2022.03.17 |
---|---|
[JPA] @Builder 어노테이션 (0) | 2022.03.17 |
[Spring] Web Application의 계층 구조 (0) | 2022.03.16 |
[Spring] Port 8080 is already in use 에러 해결 방법 (0) | 2022.01.11 |
[spring] 실행 오류 (응용프로그램이 예기치 않게 종료되었습니다.) (0) | 2022.01.08 |