1. 구현 요구사항
1) 회원 기능
2) 상품 기능
3) 주문 기능
2. 애플리케이션 아키텍처
계층형 구조 사용
Controller
, web
: 웹 계층
- 웹 MVC의 컨트롤러 역할
- 웹 요청과 응답을 처리함
- 클라이언트가 요청을 하면, 요청을 수행하는 서비스를 호출함
- HTTP 요청과 요청된 정보를 체크하고, 인증을 담당함
Service
: 비즈니스 로직, 트랜잭션 처리
- 핵심 비즈니스 로직 구현
Repository
를 이용해서 CRUD를 구현함
- 내부에서 자바 로직을 처리함
Repository
: JPA를 직접 사용하는 계층, 엔티티 매니저 사용
- 데이터베이스에 접근
- 도메인 객체를 DB에 저장하고 관리
- 실제 DB에 쿼리문을 실행하는 로직을 담당함
Domain
: 엔티티가 모여있는 계층으로 모든 계층에서 사용
- 비즈니스 도메인 객체
- 실제 DB 테이블 정보를 가지는 하나의
Entity
클래스를 생성하고 해당 Entity
를 컨트롤함
Controller -> Repository
- 간단한 정보 조회 기능과 같은 경우에는
Controller
에서 Repository
로 바로 접근하도록 구현할 수 있음
Service
는 단순히 Controller가 요청한 내용을 Repository에게 위임하는 것 뿐일때도, Serivce를 거쳐야만 구현이 가능하도록 설계하는 것은 유연성이 떨어질 수 있기 때문
패키지 구조
jpabook.jpashop
domain
exception
repository
serivce
web
개발 순서
- 서비스와 리포지토리 계층을 개발
- 테스트 케이스를 작성해서 검증
- 마지막에 웹 계층을 적용함
강의 : 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발