JPA 등장배경

호떡·2023년 1월 7일
0

JPA(Java Persistence API) 등장

객체를 데이터베이스에 저장하기 위해
JDBC > MyBatis, JdbcTemplate의 SQL Mapper > JPA 로의 흐름으로 발전

SQL 중심적인 개발의 문제점

애플리케이션은 객체 지향 언어로 개발 - 데이터베이스는 관계형 DB 사용
객체를 관계형 DB에 보관하고 관리

  • CRUD를 위한 쿼리 작성을 무한 반복해야 한다. (객체와 RDBMS 사이를 매핑_mapper)
  • 객체에 필드를 추가한다면, 쿼리문도 수정해야 한다.

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

  1. 상속 - 저장, 조회
    객체의 상속 관계는 RDBMS에선 Table 슈퍼타입 서브타입 관계로 나타낸다.
    이때의 문제점은 RDBMS 상에서는 하나의 객체가 두 개의 테이블에서 관리되는 꼴이다.

  2. 연관관계
    객체는 참조로 연관관계를 맺는 반면, 테이블은 외래키를 사용한다.

  3. 객체 그래프 탐색

  4. 비교하기
    JPA는 == 비교시 동일한 트랜잭션에서 조회한 엔티티에 대해 같음을 보장한다.

    객체 지향 언어와 RDBMS의 패러다임은 다르다. 따라서 조인, FK-PK 관계 설정 등 번잡한 매핑 작업이 발생한다. 또한 객체 그래프를 다양하게 탐색하기, 엔티티 신로에 대한 문제들이 발생할 수 있다. 즉, 객체답게 모델링 할수록 매핑 작업만 늘어난다. 단순히 객체를 자바 컬렉션에 저장한다면 이후에 조회, 삽입 등의 작업이 단순한데, 괜히 관계형 DB에 저장함으로써 더 복잡한 과정을 거치는 것 같다. 따라서 갹체를 자바 컬렉션에 듯이 DB에 저장할 수는 없을까? 이에 대한 해결책으로 JPA가 등장하였다.

0개의 댓글