[자바 ORM 표준 JPA 프로그래밍 - 기본편] 섹션 02. JPA 소개
1. SQL 중심적인 개발의 문제점
지금 시대는 객체를 관계형 DB에 보관하는 시대다. 관계형 DB에 객체를 보관하려면 SQL을 사용해야하는데, 이는 CRUD의 반복과 지루한 코드를 동반한다. 결과적으로 SQL에 의존적인 개발을 피하기 어렵다.
2. 객체와 관계형 DB의 차이
1. 상속
2. 연관관계
객체는 상속을, 테이블은 외래 키를 사용하기 때문에 어느 쪽에 중점을 두느냐에 따라 모델링이 달라진다.
3. JPA 소개
JPA는 Java Persistence API의 약자로 자바 진영의 ORM 기술 표준이다. ORM은 Object-relational mapping(객체 관계 매핑)의 약자로 객체는 객체대로 관계형 DB는 관계형 DB대로 설계하고, 이를 중간에서 매핑해주는 역할을 한다.
JPA는 표준 명세로 Hibernate, EclipseLink, DataNucleus 같은 여러 구현체들이 있다.
JPA는 애플리케이션과 JDBC 사이에서 동작한다.
JPA를 사용하면 CRUD에서 생산성이 크게 향상된다.
JPA를 사용하면 필드가 변경되는 상황에서 모든 SQL을 더 이상 수정할 필요가 없다.
JPA를 사용하면 객체와 관계형 DB의 패러다임 불일치를 해결할 수 있다.
상속 측면에서 개발자는 객체를 컬렉션에 저장하듯이 다룰 수 있으며 나머지는 JPA가 처리해준다.
연관관계 측면에서 개발자가 객체의 참조를 탐색하듯이 다룰 수 있다.
JPA는 성능 최적화 기능도 제공한다.
동일한 트랜잭션에서 조회한 엔티티는 같음이 보장된다.
트랜잭션을 커밋할 때까지 INSERT 쿼리를 모았다가 JDBC BATCH SQL 기능으로 한번에 전송하는 쓰기 지연을 지원한다.
객체가 실제 사용될 때 로딩하거나 연관된 객체까지 미리 조회하는 로딩 옵션을 제공한다.




















