스프링부트 JPA 웹 앱 구축 - 도메인과 테이블 설계

agugu95·2020년 7월 31일
0

목표

  • 실전! 스프링 부트와 JPA를 활용한 웹 애플리케이션 구축 1을 공부하며 기록
    도메인 주도 설계를 통한 스프링 starter 웹 앱을 구성

요구사항과 도메인 모델

도메인 모델 설계의 경우 먼저 UI나 프로토타입이 존재한다는 가정 하에 다음과 같이 이루어짐

  1. 기능 분석
    구현 기능 추출
  2. 도메인 모델
    기능 별 도메인 연관 관계 구성
  3. 엔티티 분석
    도메인을 구현 속성 정의
  4. 테이블 설계
    객체 지향 모델을 띄고 있는 엔티티를 RDB로 옮겨오는 작업
    둘의 패러다임이 다르기 때문에 매핑 관계 수정이 필요

강의 키워드

  • 클래스들이 모두 가지고 있어야하는 내장 필드는 값타입(Address)로 구성, 기본편에 나와있으니 볼 것
  • N:N 매핑은 쓰면 안됨, 1:N으로 풀어내야 함
  • 가급적 양방향 말고 단방향 연관 관계를 사용하는 것이 정석
  • 개발자들의 객체 지향 실수
    회원이 주문을 한다 했을 때 회원이 주문을 가진다고 생각
    하지만 실제 회원이 있어야 주문이 있는게 아니라 주문이 일어날 때 회원이 필요, 동급임
  • 실제 DB 쿼리도 회원 주문 내역이 필요하면 회원의 주문 내역으로 들어가는게 아닌 주문 내역을 뽑는데 회원을 필터로 거는거임
  • 상속을 가지는 테이블 관계 매핑은 싱글 테이블 전략 사용
  • 객체 관계는 서로 컬렉션을 소유하면 N:N 매핑을 할 수 있음
    하지만 관계형 DB는 그게 불가능하고 결국 둘과 1:1 매핑 할 테이블이 하나 더 있어야 함
    1:N:N:1 의 관계
  • 관계형 DB에선 무조건 foreign key가 있는 N의 테이블이 연관관계 아이디를 가져갈 수 밖에 없음 이것도 기본편에서 무지 강조 했으니 기본편 ㄱㄱ
  • 연관관계 매핑은 C언어의 포인터 같은거임!!!!!!!

0개의 댓글