[JPA] 데이터 중심 설계의 문제점

옹심이·2024년 12월 17일
0
post-thumbnail

엔티티는 비즈니스에 쓰이는 데이터의 집합을 의미한다.

하지만 우리가 JPA를 사용하는 이유는 개발할 때 추상화된 객체와 데이터베이스의 데이터 사이에서 유연한 상호작용을 원하기 때문이다. Order 엔티티의 설계는 괜찮은걸까?

사진처럼 Order 엔티티를 설계했을 때 주문을 한 Member객체를 들고오는 로직을 실행하려면 memberId를 통해 Member객체를 들고와야 한다.

이 설계는 객체 설계를 테이블 설계에 맞춘 방식으로 객체 지향적인 관점에서 볼 때 잘못된 설계이다.

  1. 테이블의 외래 키를 객체에 그대로 들고온다.
  2. 객체 그래프 탐색이 불가능하다.
    예를 들어, order.getMember()과 같이 협력하는 객체 간에는 그래프 탐색이 가능해야한다.
  3. 참조가 없다.
    Order 클래스는 Member에 대한 참조가 아니라 Id만 가지고 있다. 2번 문제와 맥락이 같다.

객체 지향적으로 더 나은 설계를 하려면 Order 엔티티에 멤버 변수로 Member 객체를 추가하고 member 객체를 활용하는 책임을 부여 해야 한다는 것이 내 생각이다.
(아마 JPA가 도와주겠죠?)

0개의 댓글