객체를 데이터베이스에 저장하기 위해
JDBC > MyBatis, JdbcTemplate의 SQL Mapper > JPA 로의 흐름으로 발전
애플리케이션은 객체 지향 언어로 개발 - 데이터베이스는 관계형 DB 사용
객체를 관계형 DB에 보관하고 관리
상속 - 저장, 조회
객체의 상속 관계는 RDBMS에선 Table 슈퍼타입 서브타입 관계로 나타낸다.
이때의 문제점은 RDBMS 상에서는 하나의 객체가 두 개의 테이블에서 관리되는 꼴이다.
연관관계
객체는 참조로 연관관계를 맺는 반면, 테이블은 외래키를 사용한다.
객체 그래프 탐색
비교하기
JPA는 == 비교시 동일한 트랜잭션에서 조회한 엔티티에 대해 같음을 보장한다.
객체 지향 언어와 RDBMS의 패러다임은 다르다. 따라서 조인, FK-PK 관계 설정 등 번잡한 매핑 작업이 발생한다. 또한 객체 그래프를 다양하게 탐색하기, 엔티티 신로에 대한 문제들이 발생할 수 있다. 즉, 객체답게 모델링 할수록 매핑 작업만 늘어난다. 단순히 객체를 자바 컬렉션에 저장한다면 이후에 조회, 삽입 등의 작업이 단순한데, 괜히 관계형 DB에 저장함으로써 더 복잡한 과정을 거치는 것 같다. 따라서 갹체를 자바 컬렉션에 듯이 DB에 저장할 수는 없을까? 이에 대한 해결책으로 JPA가 등장하였다.