김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 정리
애플리케이션은 객체지향 언어(Java, Kotlin 등)로 개발하지만, 데이터 저장은 관계형 DB에 SQL로 합니다. 회원 하나 등록할 때마다 INSERT, 조회할 때마다 SELECT, 수정할 때마다 UPDATE... 무한 반복입니다.
INSERT INTO MEMBER(MEMBER_ID, NAME) VALUES (?, ?);
SELECT MEMBER_ID, NAME FROM MEMBER WHERE MEMBER_ID = ?;
UPDATE MEMBER SET NAME = ? WHERE MEMBER_ID = ?;
객체는 참조로 관계를 맺지만, DB는 외래키로 연결합니다.
객체지향적으로 설계할수록 SQL 매핑이 기하급수적으로 늘어납니다.
== 실패)객체답게 모델링할수록 맵핑 작업만 증가하고,
결국 SQL 중심 개발으로 회귀하는 악순환.
"DB에 객체를 자바 컬렉션처럼 쉽게 저장할 수는 없을까?"
이런 고민 끝에 나온 것이 바로 JPA입니다.
@Entity, @Id, @OneToMany 같은 어노테이션으로 매핑 설정== 비교 가능)Member member = memberRepository.findById(1L);
Team team = member.getTeam();
List<Order> orders = member.getOrders();
객체 그래프를 자연스럽게 탐색할 수 있습니다.