코딩공작소

JPA 프로그래밍 학습 정리 (8) - 웹 어플리케이션 제작(2) 본문

어플리케이션개발/JPA

JPA 프로그래밍 학습 정리 (8) - 웹 어플리케이션 제작(2)

안잡아모찌 2024. 2. 16. 22:56

https://taehoon9393.tistory.com/372

 

JPA 프로그래밍 학습 정리 (8) - 웹 어플리케이션 제작(1)

웹 어플리케이션 만들기 진행 순서 프로젝트 환경 설정 도메인 모델과 테이블 설계 애플리케이션 기능 구현 사용할 기술 뷰 : JSP, JSTL 웹 계층 : 스프링 MVC 데이터 저장 계층 : JPA, Hibernate 기반 프

taehoon9393.tistory.com

웹 어플리케이션 만들기 진행 순서

  1. 프로젝트 환경 설정
  2. 도메인 모델과 테이블 설계
  3. 애플리케이션 기능 구현

 

사용할 기술

  • 뷰  : JSP, JSTL
  • 웹 계층 : 스프링 MVC
  • 데이터 저장 계층 : JPA, Hibernate
  • 기반 프레임워크 : 스프링 프레임워크 ( https://spring.io/ )
  • 빌드 : Maven

 


도메인 모델과 테이블 설계

교재에 소개되어 있는 회원, 상품, 주문 기능을 가지고 있는 애플리케이션을 들여다보자

  1. 요구사항 분석
  2. 도메인 모델 설계
  3. 테이블 설계
  4. 연관관계 정리
  5. 앤티티 클래스 구현
  6. 애플리케이션 구현

 

  • 회원 기능
    - 회원 등록
    - 회원 조회
  • 상품 기능
    - 상품 등록
    - 상품 수정
    - 상품 조회
  • 주문 기능
    - 상품 주문
    - 주문 내역 조회
    - 주문 취소
  • 기타 요구사항
    - 상품의 종류는 도서, 음반, 영화가 있다.
    - 상품을 카테고리로 구분할 수 있다.
    - 상품 주문 시 배송 정보를 입력할 수 있다.

 

UML 상세정보

 


엔티티 클래스 구현

앞서 appConfig.xml에서 정의한 대로, @Entity 탐색 시작 위치에 도메인 앤티티를 구현해준다.

 

Memeber

  • id를 키 값으로 하고 자동생성되는 컬럼을 설명해준다.
  • 그리고 @Embedded를 통해 임베디드형 변수로 갖는 주소값을 지정해준다.
  • 다관계 쪽인 Order에게 주인관계를 설정해주고 양방향으로써 Order를 저장하는 리스트 변수를 설정해준다.

 

Order

  • Member의 주인관계를 설정하고 지연로딩 전략을 설정한다.
  • OrderItem도메인에게 주인관계를 넘겨준다.
  • Delivery도메인과 1:1이지만 주인관계를 Order도메인에 설정해준다.

 

  • 연관관계 메서드를 추가해준다.

 

OrderItem

  • 연관관계가 있는 Item, Order의 주인관계로 설정해준다.

 

Item

부모-자식 관계를 가지므로 따로 폴더로 묶어준다.

  • 싱글테이블 전략으로 설정해주고 구분칼럼을 설정해준다.
  • 카테고리와 다대다 관계를 가지며 주인관계를 카테고리로 넘겨준다.

 

 

Delivery

  • Order와 1:1관계이며 주인관계를 order쪽으로 넘겨준다.
  • @Embedded 변수형을 사용했다.

 

Category

  • item 앤티티와 다대다 관계를 설정해준다.
  • 카테고리쪽에 주인관계로 설정을 해줬기때문에 매핑을 여기서 해준다.
  • 리스트로 items를 받아준다.
  • 자기 자신과 부모-자식 관계 매핑을 하므로 1:N, N:1 관계로 1명의 부모는 N개의 자식을 가질 수 있다.
  • 지연로딩 전략을 사용했다.
  • 연관관계 메서드로 child 변수를 추가하는 메서드를 개발해준다.

 

https://taehoon9393.tistory.com/374

 

JPA 프로그래밍 학습 정리 (8) - 웹 어플리케이션 제작(3)

https://taehoon9393.tistory.com/373 JPA 프로그래밍 학습 정리 (8) - 웹 어플리케이션 제작(2) https://taehoon9393.tistory.com/372 JPA 프로그래밍 학습 정리 (8) - 웹 어플리케이션 제작(1) 웹 어플리케이션 만들기 진

taehoon9393.tistory.com