김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 정리
핵심: SQL 중심 개발이 아닌, 객체 중심 개발이 가능하도록 지원합니다.
과거 자바 진영에서는 EJB(Entity Bean)라는 무거운 ORM 기술을 사용했지만, 너무 복잡하고 성능이 좋지 않아 대중화되지 못했습니다.
이때 등장한 것이 오픈소스 ORM 프레임워크 Hibernate입니다. Gavin King이라는 개발자가 "차라리 내가 만들겠다"는 심정으로 개발했고, 엄청난 인기를 끌었습니다.
결국 Java 진영은 Hibernate를 개발한 Gavin King을 영입하여, Hibernate 기반으로 새로운 표준 ORM 명세를 만들었는데, 그 결과가 바로 JPA입니다.
- 즉, JPA는 실용성 있는 오픈소스 기반 위에 만들어진 자바 표준 ORM입니다.
jpa.persist(member) ➔ 객체 저장 ➔ INSERT SQL 자동 생성 및 실행jpa.find(Member.class, id) ➔ 객체 조회 ➔ SELECT SQL 자동 생성 및 실행개발자는 SQL을 직접 작성하지 않고, 마치 컬렉션에 저장하듯이 객체를 다루기만 하면 됩니다.
JPA는 인터페이스의 집합입니다. 직접 동작하지 않고, 이를 구현한 구현체가 필요합니다.
대표 구현체:
실무에서는 Hibernate를 거의 표준처럼 사용합니다.
| 버전 | 특징 |
|---|---|
| JPA 1.0 (2006) | 초창기, 기능 부족 |
| JPA 2.0 (2009) | 대부분 ORM 기능 포함, Criteria API 추가 |
| JPA 2.1 (2013) | Stored Procedure, Converter, Entity Graph 지원 |
Note: JPA 2.0 이후로 큰 틀은 변하지 않았기 때문에, 지금 배우면 장기적으로 유효합니다.
jpa.persist(member)jpa.find(Member.class, id)jpa.remove(member)SQL 작성 없이 CRUD 가능 ➔ 개발 속도 상승
Member m1 = jpa.find(Member.class, "100"); // SQL 발생
Member m2 = jpa.find(Member.class, "100"); // 캐시에서 조회
System.out.println(m1 == m2); // true