관심쟁이 영호

[Spring Boot 기초] 연관관계, 주인, 스프링 핵심! 본문

Bank-End/Spring Boot

[Spring Boot 기초] 연관관계, 주인, 스프링 핵심!

관심쟁이 영호 2021. 4. 23. 02:28
반응형

스프링 공부를 해본 적이 있다면, 누구나 연관관계에 대해서 고민을 해본 적이 있을 것이다.

오늘은 그 연관관계가 어떤 것인지 살펴볼 예정이다.

아래의 그림을 보자.

 

어떠한 게시판의 게시글의 예시이다.

 

작성자: 홍길동은 User Table에서 데이터를 가지고 있다.

내용은 Board Table에서 데이터를 가지고 있다.

댓글은 Reply Table에서 데이터를 가지고 있다.

 

우리가 JPA를 사용하지 않을 때는,

DB에서 JOIN을 이용하여 조회를 한다음 해당하는 데이터를

게시판에 뿌려주는 방식을 사용했을 것이다.

 

여기서 훨씬 편리하게 JPA기술을 사용할 수가 있다.

JPA를 사용하면

우리가 Board에만 조회쿼리를 날려도 다 나온다.

 

흐름을 보면

SELECT * FROM Board Where Id = 1;

이렇게 하면 JPA를 거쳐서 DB로 쿼리가 날라가게 된다.

 

여기서 JPA는 Board 클래스에서 User의 객체가 필요한 것을 보고,

DB에게 User + Board 의 JOIN문을 먼저 날린다.

그리고 해당하는 객체를 JPA가 다시 받아서, User를 들고있는 Board 객체를 가지고 있다.

 

이 Board에서 댓글은 실제로

@JoinColumn이 필요 없다.

이유는 FK의 값을 여러개를 가질 수가 없기 때문이다.

 

300x250
Comments