본문 바로가기
카테고리 없음

[goormedu 강의] 스프링부트 블로그 만들기 03 - 05 연관관계의 주인

by 코딩맛 2024. 8. 8.
해당 글은 groomedu의 스프링부트 나만의 블로그 만들기 강의를 보고 개인적으로 정리한 글입니다.

 

연관 관계의 주인이란?

FK를 누가 가졌는가?

 

게시글을 상세조회하면

User 정보, Board 정보, Reply 정보를 가져오는데 

mybatis 사용 당시 3개 테이블을 조인해서 가져왔었음.

ORM에서는 Board 정보 하나만 select 해오면 세 오브젝트 정보를 다 가져옴.

 

Board에서 Reply 오브젝트 정보도 가져오려면

Board Reply 객체도 추가하는데

  • 하나의 게시글에 여러 개의 답변이 올 수 있으므로 List로 선언해줘야 함.
  • FK는 필요없다.
    왜? 게시글 하나에 여러 개의 답글이 달릴 수 있는데
    데이터베이스 1 정규화 원자성 규칙에 의해 replyId에 1,2,3 이런식을 들어갈 수 없기에
    FK를 생성하지 않음
  • mappedBy : reply는 연관관계의 주인이 아니다.
    • reply는 FK가 아님, DB에 FK를 만들지 않을 것.
    • Board를 select 할 때 reply에 대한 값을 얻기 위해 필요한 값.

@OneToMany(mappedBy = "board")

private List<Reply> reply;

 

패치 전략

fetch = FetchType.EAGER : 무조건 필요해서 들고 오는 것

fetch = FetchType.LAZE : 들고 올지 말지 선택 가능한 것