JPA 엔티티 양방향 참조에 대한 생각

2022. 6. 4. 19:00·Spring Framework/JPA

JPA 엔티티 양방향 참조에 대한 생각

양방향 참조에 대한 질문

양방향 참조를 걸어주신 이유가 있을까요? 양방향 참조를 걸어줄 필요가 없다면, 단방향 참조를 활용하시는 것이 좋습니다. 왜 그럴까요? 단방향 참조 외에 양방향 참조를 굳이 써야 할 경우가 있다면, 언제일까요?

엔티티 참조에 대한 내 생각

먼저 양방향 참조로 엔티티를 모두 작성하고 개발하였다. 이유는 모든 연관관계를 양방향으로 우선 두고, 기능을 개발하면서 하나씩 고민해나가는 방향으로 잡아가기로 했었기 때문이다. 일단 DB 기반으로 관계가 있을수 있다는 것을 표시하고 개발해 나가면서 해당 관계의 필요유무를 고민해 나가려고 했던 것이었다.

그러면서 참고자료의 내용을 읽어보면서 단방향 참조를 활용하는 것이 좋은 이유를 생각해보면,
올바르게 모델링 된 연결은 데이터에 엑세스하는 방법이 항상 한 가지 뿐임을 보장한다라는 말이 와 닿았다.
관리 포인트가 하나여야 한다라는 것이 DB 엑세스에도 해당하는 것이었다.

양방향 참조를 굳이 써야 하는 이유는, 그럼에도 불구하고 업무 도메인 상 양방향 참조를 했을 경우 효율적일 때라고 생각한다.

참고자료

  • http://stochastyk.blogspot.com/2008/06/associations-in-domain-driven-design.html

실제 개발하고 느낀점

JPA로 토이 프로젝트를 하면서 느낀 것은, DB는 관계가 있더라도 엔티티에 굳이 관계가 없어도 된다는 점이다.
어디서 연관관계를 끊어내야할까를 고민하다보면, 연관관계 자체가 필요없고, 엔티티의 속성에는 관계가 필요한 엔티티의 ID값만 있어도 충분한 경우들이 느껴진다.
그 때 엔티티의 모든 관계를 삭제하고 ID만 갖고 있게 구현하였을 때, 처음에는 어렵게만 느껴졌던 전체 구현이 하나씩 풀리면서 재미있었고 다른 기능들을 개발해나가면서 다른 고민을 할 것들이 기대가 되었다.

저작자표시 (새창열림)

'Spring Framework > JPA' 카테고리의 다른 글

@GeneratedValue 기본키 전략 4가지  (0) 2022.06.05
@Embeddable 사용 이유와 장점  (0) 2022.06.04
'Spring Framework/JPA' 카테고리의 다른 글
  • @GeneratedValue 기본키 전략 4가지
  • @Embeddable 사용 이유와 장점
devstep
devstep
웹 백엔드 개발자
  • devstep
    개발 여정
    devstep
  • 전체
    오늘
    어제
    • 분류 전체보기 (86) N
      • Java관련 (27)
        • Java (21)
        • Intellij (4)
      • Spring Framework (14)
        • Spring (11)
        • JPA (3)
      • Concept (6)
        • 인증 (1)
        • REST API (1)
        • 테스트코드 (3)
        • 클린코드 (1)
      • Database (8)
        • RDBMS공통 (1)
        • MySQL (6)
        • Oracle (1)
      • git (2)
      • Computer Science (3)
        • 네트워크 (1)
        • 자료구조 (1)
        • 보안 (1)
      • Essay (15) N
        • Learning Essay (10)
        • WIL (5) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    bean
    성능테스트
    nofile
    클린코드
    aggregate
    innodb
    JavaMemoryModel
    linux
    storageEngine
    JVM
    보안
    부하테스트도구
    대칭암호화
    springsecurity
    인텔리제이실행에러
    테스트코드
    비대칭암호화
    부하테스트
    DDD
    자바메모리모델
    JMeter
    seed
    tdd
    블록암호화
    단위테스트
    ClusteredIndex
    applicationcontext
    nginx
    component
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
devstep
JPA 엔티티 양방향 참조에 대한 생각
상단으로

티스토리툴바