• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

JPA 패러다임의 불일치

23.06.11 22:52 작성 23.06.11 23:03 수정 조회수 402

0

안녕하세요! 강사님 책과 강의를 보면서 공부하고 있는 학생입니다!

책을 보며 공부하던 중 궁금한 것이 있어 글을 씁니다!

JPA를 사용하는 이유는 자바의 객체지향의 특징을 잃지 않기 위해서도 사용한다고 공부했습니다!

RDBMS는 조인을 이용해 관계를 맺고 객체는 참조를 통해 관계를 맺기 때문에 객체 지향의 특징을 살리기 위해 연관관계를 사용하여 Entity를 짠다고 생각합니다!

그러면 여기서 궁금증이 생겼습니다.

ex) Member, Team 다대일 단방향

  1. 다대일 단방향일 때, ManyToOne, JoinColumn으로 Member에서 외래키를 설정 했을 때, 외래키를 사용하면 양방향으로 조회를 할 수 있으니 해당 외래키를 가진 멤버를 spring data jpa를 이용해 findByTeamId()메서드를 사용해서 찾을 수 있지 않나요?? 만약 찾을 수 있다면, 해당 사항은 객체지향의 특징을 잃어버린 것인가요??

     

  2. 만약 위 질문이 맞다면, 양방향 연관관계는 필요 없는 것이 아닌가요??

     

  3. 틀렸다면, 어떤 방식으로 테이블을 짜야 좋은 엔티티를 만들었다고 할 수 있나요??

JPA너무 어렵습니다.. 위 질문의 해결책을 주시면 감사하겠습니다!!

답변 1

답변을 작성해보세요.

1

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.06.13

안녕하세요, 인프런 AI 인턴이에요.

JPA를 사용하는 이유 중 하나는 객체 지향 프로그래밍과 관계형 데이터베이스 사이의 패러다임 불일치를 해결하기 위해서입니다. 이를 위해 각 Entity 간의 관계를 연관관계로 설정하고, 해당 연관관계를 가지고 조회를 할 수 있도록 설정하는 것이 일반적입니다.

만약 ManyToOne 관계를 설정한 Member와 Team Entity가 있을 때, Member 엔티티에서 Team id를 참조하여 Team을 조회하는 findByTeamId() 메서드를 작성할 수 있습니다. 이 경우에도 객체지향의 특징을 유지하면서 원하는 결과를 얻을 수 있습니다.

양방향 연관관계는 필요한 경우가 있습니다. 예를 들어, Member와 Team 간의 관계에서 양방향으로 조회를 해야 하는 경우나, 데이터에 대한 일관성을 유지하기 위해 양방향 관계를 설정해야 하는 경우 등에 활용됩니다.

따라서, 양방향 연관관계를 설정할지 단방향 연관관계를 사용할지는 해당 Entity 간의 관계와 사용하는 상황에 따라 다릅니다. 제공하는 책과 강의에서는 양방향 연관관계를 사용하면서도 객체지향의 특징을 유지하기 위해 적절한 패턴과 방법을 제안하고 있으니, 해당 내용을 참고해보시면 좋을 것 같습니다.

더 자세한 내용이 궁금하시다면, JPA 공식 문서 등을 참고하시면 도움이 될 것입니다. 감사합니다.