반응형
실습해보기
비즈니스 요구사항
- 데이터: 회원ID, 이름
- 기능: 회원등록, 조회
- 아직 데이터베이스가 선정되지 않음
계층구조
계층 | 설명, 예시 | 클래스 |
Controller | 사용자의 요청을 받고, 응답을 돌려줌 (API or HTML View 반환) | UserController, ApiController |
Service | 실제 비즈니스 로직 처리 (계산, 조건 등) | UserService, OrderService |
Repository | DB와 직접 통신 (CRUD) | UserRepository, JpaRepository |
Model | 데이터 구조 (DTO, Entity 등) | User, Post, Person 등 |
Domain | 핵심 비즈니스 개념, 규칙, 엔티티, 도메인 모델 | User, Order, Post, Comment |
클래스 의존관계
클래스 | 설명 |
MemberService | 회원 등록, 조회 등의 비즈니스 로직을 담당 |
MemberRepository (interface) | 데이터 저장소를 추상화한 인터페이스 |
MemoryMemberRepository | 메모리에 데이터를 저장하는 구현 클래스 (임시 저장소) |
- MemberService는 MemberRepository 인터페이스만 알고 있음
- 실제 저장은 MemoryMemberRepository가 처리함
- 나중에 DB가 정해지면 MemoryMemberRepository만 다른 구현체(DB 버전)로 바꿔끼우면 됨
회원도메인과 레포지토리 만들기
1. 도메인 객체 만들기
public class Member {
private Long id;
private String name;
}
→ 회원의 데이터 구조를 만든다. (객체의 뼈대)
2. 저장소 인터페이스 만들기
public interface MemberRepository {
Member save(Member member);
Optional<Member> findById(Long id);
List<Member> findAll();
}
→ 회원 데이터를 저장하거나 조회하는 기능을 약속(정의)한다.
3. 저장소 구현 클래스 만들기
public class MemoryMemberRepository implements MemberRepository {
private Map<Long, Member> store = new HashMap<>();
...
}
→ 위에서 약속한 기능을 메모리에 실제로 구현한다.
4. 테스트코드 작성
@Test
public void save() {
Member member = new Member();
member.setName("spring");
repository.save(member);
...
}
→ 만든 기능이 정상 동작하는지 확인한다.
⁜ 배울 것 3가지
- 클래스는 역할에 따라 나눠서 만든다
- 인터페이스를 만들면 나중에 쉽게 바꿀 수 있다
- 테스트는 기능이 잘 돌아가는지 확인하는 도구이다
반응형
'WINK-(Web & App) > Spring Boot 스터디' 카테고리의 다른 글
[2025 1학기 스프링부트 스터디] 김민서 #4주차 (0) | 2025.05.03 |
---|---|
[2025 1학기 스프링 부트 스터디] 석준환 #4주차 (0) | 2025.04.29 |
[2025 1학기 스프링부트 스터디] 김민서 #3주차 (0) | 2025.04.13 |
[2025 1학기 스프링부트 스터디] 정다은 #3주차 (0) | 2025.04.12 |
[2025 1학기 스프링부트 스터디] 고윤정 #3주차 (0) | 2025.04.12 |