1. 도메인 만들기
💡 도메인이란, 애플리케이션이 다루는 비즈니스 문제 영역과 그 영역을 표현하는 객체들을 의미한다.
파일위치: src/main/java/만든 파일명/domain(직접 만들어야하는 패키지)/Member
[Member.java]
package section4.section4_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;
}
}
2. Repository만들기
💡 Repository란, 데이터를 저장하고 조회하는 역할을 하는 계층을 의미한다. Repository는 주로 데이터베이스와 상호작용하며, 도메인 객체를 저장하거나, 수정하거나, 삭제하거나, 조회하는 기능을 제공한다.
파일 위치: src/main/java/만든 파일명/repository(직접 만들어야하는 패키지)/MemberRepository
[MemberRepository.java] 이 파일은 인터페이스로 일종의 계약서이다. (현재는 DB에 연결하지 않았지만 추후에 연결할 수 있기에 인터페이스로 작업한다.)
package section4.section4_spring.repository;
import section4.section4_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(); //모든 회원 조회
}
파일 위치: src/main/java/만든 파일명/repository(직접 만들어야하는 패키지)/MemoryMemberRepository
[MemoryMemberRepository.java]
package section4.section4_spring.repository;
import section4.section4_spring.domain.Member;
import java.util.*;
public class MemoryMemberRepository implements MemberRepository {
private static Map<Long, Member> store = new HashMap<>(); //중복, 순서없는 (키, 값) 자료구조
private static long sequence = 0L; //long 타입의 수
@Override
public Member save(Member member) {
member.setId(++sequence);
store.put(member.getId(), member); //멤버의 아이디와 멤버객체를 store 해쉬맵에 저장
return member;
}
@Override
public Optional<Member> findById(Long id) {
return Optional.ofNullable(store.get(id)); //null이 나올 수 있기에 옵셔널로 감싸고 아이디 찾는 로직 실행
}
@Override
public Optional<Member> findByname(String name) {
return store.values().stream()
.filter(member -> member.getName().equals(name))
//멤버를 매개변수로 넘겨 member.getName()한 값과 메소드로 받은 name이 같은지 확인
.findAny();//하나라도 있는지 확인
}
@Override
public List<Member> findAll() {
return new ArrayList<>(store.values()); //store에 저장된 모든 값을 ArrayList 형태로 반환
}
//기존에 저장소에 있던 데이터 모두 삭제 - 테스트를 위해 작성
public void clearStore(){
store.clear();
}
'Server > Spring' 카테고리의 다른 글
회원관리 - 백엔드 개발) 3. 회원 서비스 개발하기 (0) | 2024.08.24 |
---|---|
회원관리 - 백엔드 개발) 2. 각각의 repository 메소드 테스트 하기 (0) | 2024.08.24 |
JSON 데이터를 직접 반환하여, 템플릿을 거치지 않고 API 응답을 처리하기(API 활용하여 개체 JSON으로 반환하기) (0) | 2024.08.24 |
HTML 페이지 렌더링 시 요청받은 데이터 포함하기(매개변수를 MVC패턴으로 전달해 렌더링하기) (0) | 2024.08.24 |
HTML 페이지 렌더링 시 고정된 데이터 포함하기(MVC와 템플릿엔진 이용해보기) (0) | 2024.08.24 |