본문 바로가기
목차
Spring/Spring boot

스프링부트 강좌 22강(블로그 프로젝트) - 연관관계의 주인

by 지각생 2022. 1. 21.
728x90

출처:

https://www.youtube.com/watch?v=DtMmXQl4_hw&list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm&index=24 


마이바티스 였다면

3개를 조인해서 셀릭트해서 해당 페이지에 다 들고 왔을 것임

 

ORM은 Board테이블만 select하면 된다.

JPA가 알아서 join문을 DB에 준다?

DB에선 JPA로 Board 정보주는데 거기에 user정보가 들어온다.

왜냐면 user 오브젝트를 들고 있기 때문

어떻게 보면 좋은 기술인데 어떻게 보면 필요없는 기술이다.?

 

여튼..?

user정보가 Board정보만 요청해도 온다면

Reply정보는?

그래서 코드 한줄 더 필요하다

Board 테이블 select 하려는데

Board 테이블 안에는 user +Reply정보까지 다 있다.

 

 

1개의 게시글에는 1개의 유저의

1개의 게시글에는 여러개의 답변

 

join해서 Reply정보가 여러개여야한다.

그래서 List 타입이 된다.

 

그리고 관계

 

1개의 게시글은 여러개의 답변

@OneToMany

그리고

@JoinColumn(name="replyId")

라는 포린키가 필요없다

얘를

48행

mappedBy에 넣어준다.

mappedBy는 연관관계의 주인이 아니다(난 FK가 아니에요) DB에 칼럼을 만들지 마세요.

나는 그냥 board를 select할때 join문을 통해서 값을 얻기 위해 필요한겁니다

 

포린키는 얘다.

 

그래서 실제로

첫번째로  '좋아요'라고     2번user가작성  1번게시글에

두번째로  '같이해요'라고  3번user가작성  1번게시글에

즉,

포린키는 boardId에 있어야지 userId에 있으면 안 됨

 

45행

@ManyToOne에선 기본 fetch전략이 위와같다.

49행

@OneToMany에서 기본전략은 위와 같다.

 

이렇게 정보가져올때 한번에 다 펼쳐야하므로

LAZY말고 EAGER전략으로 바꾼다.

728x90

댓글