전체 보기
📗

[스프링부트와 JPA 활용1] 3. 구현 준비

작성일자
2022/11/23
태그
SUB PAGE
프로젝트
JPA 활용1
책 종류
1 more property

1. 구현 요구사항

구현 o
회원 기능
회원 등록
회원 조회(목록)
상품 기능
상품 등록
상품 수정
상품 조회(목록)
주문 기능
상품 주문
주문 내역 조회(목록)
주문 취소
구현 x
로그인과 권한 관리X
파라미터 검증과 예외 처리X
상품은 도서만 사용
카테고리는 사용X
배송 정보는 사용X

2. 애플리케이션 아키텍처

1) 애플리케이션 아키텍처 구성

계층형 아키텍처 사용
정의) controller, service, repository의 구조
repository에서 데이터베이스 접근
각각은 (엔티티나 오브젝트들을 설계해둔) 도메인을 참조함
정리)
controller, web: 웹 계층
service: 비즈니스 로직, 트랜잭션 처리
repository: JPA를 직접 사용하는 계층
엔티티 매니저 사용해 데이터베이스에 접근
domain: 엔티티가 모여있는 계층
모든 계층에서 사용
그림과 다른 점)
컨트롤러는 리포지토리에 바로 접근가능하게 할 것임
컨트롤라가 회원 리포지토리에서 바로 회원 찾아오는 경우. (간단한 조회의 경우)
컨트롤러에서 리포지토리에 간단한 회원정보 뿌릴 경우.

2) 패키지 구조

jpabook.jpashop
web
service
repository
domain
exception // 공통 예외 모아둠

3) 개발 순서

domain → repository → service → test → web(controller) → API

4) 엔티티 vs 테이블

@Entity(name ="")의 경우 말그대로 엔티티의 이름을 정할때 사용됨. 이는 HQL에서 엔티티를 식별할 이름을 정함
@Table(name ="")의 경우 Database에 생성될 table의 이름을 지정할때 사용됨.
@Table이 없고 @Entity(name ="")만 존재하는 경우, @Entity의 name 속성에 의해, Entity와 Table 이름이 모두 결정됨.
정리) @Entity만 사용할 경우 자동으로 Entity+Table 기능을 수행하고 @Entity + @Table 을 따로 사용하면 각자 설정 값에 따라 작동함.
참고