[참고] JPA (Java Persistence API)

박은서's avatar
Feb 05, 2026
[참고] JPA (Java Persistence API)

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