• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

jpa 연관관계에 대해서 질문드립니다 .

20.12.31 11:16 작성 조회수 157

0

안녕하세요 Spring Data  Jpa 강의들으며

김영한님 jpa책으로 독학을 하고 있는 개발자 입니다 .

공부하다가 궁금한게 .

  • 다대일(@ManyToOne)
  • 일대다(@OneToMany)
  • 일대일(@OneToOne)
  • 다대다(@ManyToOne)

이런식의 맵핑 종류가 있는데 저기서도 단방향 , 양방향 이 존재한다고 들었습니다 .

보통 다대일(@ManyToOne)과 일대다(@OneToMany) 관계를 가장 많이 사용하고 다대다 관계는 실무에서 거의 사용하지 않습니다. 라는 구절과 단방향 보다는 양방향이 더 안정적이라는 걸 공부하다가 본거같습니다 ..

1. 그러면 단방향이 반드시 쓰여야 할 상황이 있을꺼 인데 가령 어떤것들이 있을까요 .

2. 양방향이 쓰여야 할 상황은 실무적으로 어떤 상황이 존재 할까요 ..

 단편적인 코딩법은 알겠지만 실제 실무에서 어떤 상황에서 사용해야 할지 

무조건  ManyToOne의 양방향 관계위주로 엔티티를 작성하면 되는건지 여부가 궁금해서요 ..

ex ) Member(N)(fk키 포함)주인  :  Team(1) 

답변 1

답변을 작성해보세요.

1

방향은 객체가 필요로 할 때 만들어지는겁니다. 예를 들어, A가 B를 참조할 필요가 있으면 A에 B 레퍼런스 타입의 변수를 선언해서 쓰면 방향이 생기는 거죠.

"단방향 관계가 반드시 쓰여야 할 상황" 같은게 있는게 아니라 "단방향 관계가 적절한 상황"이라고 말하는게 좋겠네요. A에서는 B를 참조할 필요가 있지만 B에서는 A를 참조하지 않아도 되는 상황이겠죠. 가령, Post와 Comment 관계를 가지고 생각해 보면, Post가 Comment 목록을 참조해야 코드가 자연스럽고 비즈니스 로직을 코드로 옮기는데 적절하다면 그렇게 Post 에서 Comment  로 OneToMany 관계가 생기겠죠. 그런데 여기서 반대로 Comment에서도 자신이 속한 Post를 참조해야 코드가 자연스럽다면 양방향 관계가 되는겁니다. 어떤 규칙이나 "반드시 그래야 만 하는 상황"이 있는게 아니라 필요한 로직에 따라 달라지는 겁니다.

문제나 상황 마다 달라지는 거라서 "반드시", "무조건" 이라는 단어를 넣어서 단순화 시키기 어렵습니다.