TIL ... day 35 6주차 - day 1. 클론코딩 프로젝트 시작 … 22.06.17

BYEONGMIN CHOI·2022년 6월 18일
0

WEEK7_클론코딩

프로젝트 명 : AIRBNB 클론코딩

목표 기능

  • 숙소 CRUD
  • 필터링(카타고리)
    • 요금
    • 숙소 유형
    • 침실
    • 건물 유형
    • 편의시설
    • 접근성 편의
    • 지역특성

- 예약(예약 가능 날짜 확인)
  • 무한스크롤
  • 회원가입(게스트, 호스트 + Oauth)

추가목표

  • Google Map
  • 환율 계산한 가격표시(프론트?)
  • 호스트에게 연락하기(DM)
  • 지도 표시(전체 숙소)

프로젝트 기간(2022.06.17 ~ 2022.06.13)

API 설계

엔티티 ERD


@ElementCollection VS @OneToMany

Entity 연관관계 매핑에서 항상 @ManyToOne, @OneToMany 로 사용하다가 이번 프로젝트를 하면서 @ElementCollection 이라는 새로운 어노테이션을 사용하는 것을 봐서 정리해보려합니다.


@ElementCollection

@ElementCollection은 @CollectionTable이 대상 테이블의 이름을 지정한 다음 @JoinColumn이 조인할 실제 열을 다음과 같이 지정하는 컬렉션을 매핑하고 있음을 컴파일러에 알림

  • @Embeddable 객체의 일대다 관계
  • Java Primitives, wrapper, Date, String, etc. 같은 일대다 관계 기본 객체

\rightarrow target table을 실제로 생성


@OneToMany

대상 객체가 엔티티에만 해당하는 경우 일대다 관계를 정의

비교

  1. @ElementCollection 은 대상 객체가 엔티티가 아니라는 점을 제외하곤 @OneToMany 와 유사함
  1. @ElementCollection 을 사용하면 대상 객체를 부모 객체와 독립적으로 쿼리, persist, merge 할 수 없다.
  1. cascade 작동을 지원하지 않는다. 이는 대상 객체가 항상 상위 객체와 함께 persist, merge, removed 됨을 의미합니다.
  1. @ElementCollection단순/기본 객체로 컬렉션을 쉽게 정의할 수 있는 방법입니다.@OneToMany세분화된 제어가 필요한 복잡한 사용 사례에 가장 적합합니다.

참고 사이트 : https://medium.com/nerd-for-tech/elementcollection-vs-onetomany-in-hibernate-7fb7d2ac00ea

profile
스스로 성장하는 개발자가 되겠습니다.

0개의 댓글