Project/DARLING

4. 연관관계 - OneToMany

DiaryEntity

package so.ego.re_darling.domains.diary;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import so.ego.re_darling.domains.user.domain.Couple;

import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

@Getter
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Table(name = "diary")
@Entity
public class Diary {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private LocalDateTime date;

    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "couple_id")
    private Couple couple;

    @OneToMany(cascade = CascadeType.ALL)
    @JoinColumn(name = "diary_id")
    private List<DiaryComment> diaryCommentList = new ArrayList<>();


}

 

Diary 글 한개의 여러개의 Comment를 추가할 수 있다.

 

1. Diary를 조회할 때 comment List 도 같이 조회하고 싶다.

2. Comment를 따로 조회할 목적이 없다.

 

라고 생각해서 일대다 중 일인 Diary에 @OneToMany를 적용하려고 했다 . 하지만 흐름을 생각해보면

Diary 작성 -> Comment 작성 -> Diary update query 발생 이 된다.

객체와 테이블의 패러다임 차이때문이다.

 

그래서 다대일 단방향 관계로 매핑 후 필요할 때 양방향 매핑을 하도록 한다.

 

 

반응형

'Project > DARLING' 카테고리의 다른 글

7. CI/CD 계획  (0) 2022.02.09
6. 무엇이 문제일까 ...  (0) 2022.01.25
5. Spring REST Docs 사용  (0) 2022.01.24
3. 연관관계 - ManyToOne  (0) 2022.01.23
2. Entity  (0) 2021.12.03