WEEK7_클론코딩
프로젝트 명 : AIRBNB 클론코딩
목표 기능
- 필터링(카타고리)
- 요금
- 숙소 유형
- 침실
- 건물 유형
- 편의시설
- 접근성 편의
- 지역특성
- 예약(예약 가능 날짜 확인)
추가목표
- 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. 같은 일대다 관계 기본 객체
→ target table을 실제로 생성
@OneToMany
대상 객체가 엔티티에만 해당하는 경우 일대다 관계를 정의
비교
- @ElementCollection 은 대상 객체가 엔티티가 아니라는 점을 제외하곤 @OneToMany 와 유사함
- @ElementCollection 을 사용하면 대상 객체를 부모 객체와 독립적으로 쿼리, persist, merge 할 수 없다.
- cascade 작동을 지원하지 않는다. 이는 대상 객체가 항상 상위 객체와 함께 persist, merge, removed 됨을 의미합니다.
@ElementCollection
은 단순/기본
객체로 컬렉션을 쉽게 정의할 수 있는 방법입니다.@OneToMany
는 세분화된 제어
가 필요한 복잡한 사용 사례에 가장 적합합니다.