TravelMate-KU / TravelMate-Server

0 stars 1 forks source link

Course, Travel_Component 관계 분리 #3

Closed jaeuk520 closed 4 months ago

jaeuk520 commented 4 months ago

기존 방식

수정 요청 방식

조인 테이블을 사용하게되면 JPA에서 ManyToMany로 매핑해야하기 하는데 이를 지양하고자 하여 문제를 제기합니다.

david-parkk commented 4 months ago

ManytoMany를 지양해야한다는 알고 있었는데 이번기회에 한번 찾아봤네요. 가장 납득이 갈만한 주장은 ManytoMany를 사용할경우 JPA에서 쿼리를 예측하기 어렵다는 점과 조인테이블에 다른 컬럼을 추가할 수 없다는 주장이네요.

ManyToMany를 사용하지 않는 이유

david-parkk commented 4 months ago
public class Course {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "c_id")
    private Long courseId;

    private String name;

    private String region;

    private String description;

    private String imageUrl;

    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "h_id")
    private Health health;
}

Course 에서 @OneToMany 으로 CourseTravelComponent 를 리스트의 형태로 가지고 있어야하지 않나요? #4

david-parkk commented 4 months ago
@OneToMany(fetch = LAZY, mappedBy = "courseTravelComponent")
    private List<CourseTravelComponent> courseTravelComponentList=new ArrayList<>();

이런식으로 추가되어야할 것 같네요

jaeuk520 commented 4 months ago

4 TODO 부분에서 언급한 내용과 동일합니다 👍

구현하다가 필요하면 추가하려고 했는데 미리 추가해둬도 상관없어요 😃

david-parkk commented 4 months ago

넵 기능 추가 할때 함께 추가하면 될거 같네요 😃