JPA 왜 사용하나?

yshjft·2022년 6월 17일
0

다양한 데이터베이스가 있지만 아직까지 데이터베이스의 세계는 관계형 데이터베이스가 대세이다.

객체지향을 원하지만 관계형 데이터베이스 때문에 중복되는 무수한 SQL을 작성하는 코드가 발생하게 된다. 즉, SQL 의존적인 개발을 피하기 어렵다.

객체와 데이터베이스

필드와 메서드를 묶어 캡슐화하는 객체데이터를 잘 정규화해서 보관하는 것을 목표로 하는 데이터베이스는 패러다임이 일치하지 않았다.

객체와 관계형 데이터베이스의 차이

  • 상속
    • 객체 ⭕️
    • RDB ❌
  • 연관관계
    • 객체는 레퍼런스
    • RDB는 FK를 이용한 join

객체 그래프 탐색

  • A.b를 통해서 객체간 자유롭게 이동하며 탐색하는 것
  • 하지만 RDB를 사용하는 환경에서 이러한 객체 그래프 탐색이 제한된다. SQL에 따라 탐색 범위가 정해지기 때문이다. 그리고 이는 엔티티 신뢰 문제를 발생시킨다.

엔티티 신뢰 문제

객체 그래프 탐색을 진행하기 전 SQL을 확인하여 어느 부분까지 불러왔는지 확인을 우선적으로 해야 한다.

비교 불가능

DAO를 통해 동일한 데이터를 조회해도 객체는 다르다.

Member m1 = dao.getMember(1);
Member m2 = dao.getMember(1);
m1 != m2

결론

객체 답게 모델링을 할 수록 SQL 매핑 작업만 늘어나므로 이러한 문제를 해결할 수 있는 JPA를 사용하게 되었다.

profile
꾸준히 나아가자 🐢

0개의 댓글