1. JPA (Java Persistence API)
1️⃣ JPA란?
1) JPA의 본질
기술 구현체가 아니라 인터페이스 규약
즉, JPA 자체는 동작하지 않고 이를 구현한 라이브러리가 필요함
2) 대표 구현체
- Hibernate (가장 널리 사용)
- EclipseLink
- OpenJPA
실무에서는 “JPA 쓴다” = 사실상 Hibernate 사용인 경우가 많음
2️⃣ JPA가 필요한 이유
1) 전통적인 JDBC 방식
- SQL 직접 작성
- ResultSet → 객체 변환 수동 처리
- 반복 코드 많음
- 유지보수 비용 큼
2) JPA 방식
- SQL 대신 객체(Entity) 중심 개발
- 자동 매핑 (ORM: Object Relational Mapping)
- DB 테이블 ↔ 자바 클래스 연결
3️⃣ 핵심 구성 요소
1) Entity (엔티티)
- DB 테이블과 매핑되는 자바 객체
@Entity
public class Member {
@Id
private Long id;
private String name;
}➡️ 이 클래스 = DB 테이블 한 행(row)
2) EntityManager
- JPA의 핵심 인터페이스
- 역할
- 저장 (persist)
- 조회 (find)
- 수정 (dirty checking)
- 삭제 (remove)
Member member = new Member();
member.setName("John");
entityManager.persist(member);3) Persistence Context (영속성 컨텍스트)
- JPA의 가장 중요한 개념
- 특징
- 엔티티 캐시
- 동일성 보장
- 변경 감지 (Dirty Checking)
- 쓰기 지연 (Write Behind)
- 예
Member m = entityManager.find(Member.class, 1L);
m.setName("New Name"); // SQL 안 써도 UPDATE 발생4️⃣ JPA가 제공하는 장점
- 객체 중심 개발 가능
- SQL 의존도 감소
- 생산성 향상
- 트랜잭션 관리 용이
- 성능 최적화 기능 내장
5️⃣ 실무에서 자주 겪는 오해
1) ❌ "SQL 안 써도 된다" → 완전한 착각
- 복잡한 쿼리는 결국 JPQL / Native SQL 필요
2) ❌ "자동이라 성능 걱정 없다" → 위험
- 지연 로딩, N+1 문제 이해 필수
3) ❌ "JPA = 간단한 기술" → 절대 아님
- 내부 동작 원리 이해가 중요
6️⃣ 한 줄 요약
1) JPA
“DB를 객체처럼 다루게 해주는 자바 ORM 표준”
2) Hibernate
“그 표준을 실제로 구현한 엔진”
Share article