codingstudy
982
2021-06-11 17:17:31
2
83

JPA 방향 관계 에대한 질문


안녕하세요 JPA 강의를 듣고있구요

구글링을해서 찾아봐도 잘 이해가 가지않아 질문하겠습니다..(


1)방향관계를 설정해주는 이유,기준 이 무엇이죠?

방향관계를 설정해줌으로서 어떤 차이점이 나타나는지 잘모르겠습니다.. 


EX) 회원가입과 주문 

주문을 하기위해선 회원가입 정보가 필요하고

회원가입 하기위해선 주문에대한 정보는 필요가없으면

단방향 인건가요?


2)객체와 , 데이터베이스

객체 연관관계와,  데이터베이스 연관 관계가 다르다.

이점도 이해가 안가네요 ㅠㅠ,,


그냥 기계처럼 외워서하는 느낌이 싫어서 여쭤봅니다...

0
  • 답변 2

  • 제타건담
    7k
    2021-06-11 17:36:52

    그렇게 관계를 만들어야 하는지..에 대한 필요성에 의해서 정의되는겁니다..반드시 그래야 한다..라는게 아니구요..

    예를 들어 데이터베이스와 객체의 관계 설정에서 보면..

    DB 입장에서는 PK, FK의 관계 설정때문에 그렇게 만들었다 해도..

    이를 반영하는 객체에서는 반드시 이렇게 따라가야할 필요는 없습니다..


    예를 들어 회원정보(Member 클래스)와 주문(Order 클래스) 관계를 보죠..

    비즈니스 로직의 정의가 회원정보를 볼때 이 사람이 주문한 것을 볼 필요는 없지만

    주문 정보에서는 주문한 사람의 회원정보를 봐야 한다고 정의되었다고 하죠..

    (사실 이렇게 하진 않습니다..회원과 주문은 양방향 참조 관계로 설계하는것이 맞습니다. 다만 단방향에 대한 설명땜에 이렇게 정의를 가정한거에요..)

    그러면 Member 클래스에서는 이 사람의 주문리스트가 들어있는 List<Order> 객체 멤버변수를 만들 필요가 없습니다..

    왜냐면 비즈니스 로직 정의에 회원정보를 볼때 주문한 것을 봐야 할 일은 없다고 되어 있으니까요..

    그러나 Order 클래스에서는 주문정보를 누가 했는지를 알아야 할 Member 클래스의 멤버변수가 있어야 합니다..

    왜냐면 업무 정의에 주문 정보에서 회원 정보를 볼수 있어야 한다고 정의되어 있으니까요..


    즉 JPA에서의 관계 라는 것은 우리가 업무 로직에 맞춰서 클래스를 설계할때..

    이것을 서로가 서로를 보게끔 하는 양방향 설계를 해야 하느냐..

    아니면 한쪽이 다른 한쪽을 참조하지만 그 반대에 대한 참조는 할 필요가 없는 식의 단방향 설계를 하느냐..

    로 이해하시면 됩니다..


    그러나 DB는 그렇게는 안되죠..DB 입장에서는 업무적인 설계가 아니라 RDB 적인 관점에서 PK, FK를 설계하는겁니다..여기에 업무로직이 더해져서 회원은 주문을 볼 수 있지만 주문은 회원을 볼 수 없는 이런 설계 개념이 아니에요..


    정리하자면 JPA는 자바 클래스 설계 입장에서 비즈니스 로직에 맞춰 각 테이블을 대표하는 엔티티 클래스를 설계하는 것이고..

    DB 설계는 RDB 관계 정의에 따라 설계한다고 보시면 됩니다..

     


  • codingstudy
    982
    2021-06-11 23:35:33

    선생님 정말 이해하는데 큰도움됬습니다.

    이렇게까지 설명해주시다니 정말감사합니다.

    ㅠㅠ

    감사합니다

  • 로그인을 하시면 답변을 등록할 수 있습니다.