본문 바로가기
JAVA & SPRING/JPA

JPA 기본편0(연관관계 매핑 기초, 연관관계가 필요한 이유 & 연관관계 매핑)

by 눈오는1월 2024. 2. 23.
728x90

본 내용은 인프런 김영한 강사님 JPA 기본 편 강의를 듣고 정리한 내용입니다.

https://www.inflearn.com/course/ORM-JPA-Basic

 

자바 ORM 표준 JPA 프로그래밍 - 기본편 강의 - 인프런

저는 야생형이 아니라 학자형인가봐요^^ 활용편 넘어갔다 30% 정도 듣고 도저히 답답해서 기본편을 들어버렸네요^^. 한주 한주 김영한님 강의 들으니 렙업되는 모습을 스스로 느낍니다. 특히 실

www.inflearn.com

 

연관관계가 필요한 이유

 

연관관계가 없는 객체 즉, 객체를 테이블에 맞춰 모델링을 할 경우 문제점이 존재하는데 객체 간의 협력 관계를 만들 수 없다는 것이다

이 말은 객체지향적인 코드가 아니게 된다는 것이다.

 

teamId 로 저장 (연관관계 x)

이런 식으로 하게 되면 Team과 Member의 연관관계가 존재하지 않는다. 그래서 나중에 Member의 팀에서 팀의 이름을 호출할 때 억지로 호출을 해야 한다.

위 코드처럼 Member와 Team의 연관관계가 없기 때문에 객체의 협력으로 값을 가져오는 것이 아닌 id을 가져오고 그 팀의 이름을 꺼내오는 듯이 억지로 값을 가져와야 한다.

 

객체지향 모델링

위 코드를 객체지향으로 바꾸려면 어떻게 해야 할까?

 

teamId 대신 Team 객체를 직접 연관관계를 만들면 된다.

 

Member에 Team을 직접 주입(Member와 Team의 연관관계 만들기)

이런 식으로 엔티티를 설계 하게 되면 위와 다르게 객체의 협력관계를 만들 수 있다.

findMember와 findTeam의 연관관계가 된 모습

 

이렇게 연관관계에서는 연관관계가 수정하기 되게 편하다

만약 TeamB가 생겨서 member1가 TeamB로 바꿨다고 생각해 보자

member의 팀 변경

이런식으로 바로 teamB를 주입하면 된다. 

728x90