풀스택 백엔드 2026.06.02

syyu21b·2026년 6월 2일

풀스택 - 백엔드

목록 보기
22/49
post-thumbnail

[SECTION21. JPA(Java Persistence API)]

JPA(Java Persistence API) = 자바 애플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스의 모음(표준 명세)

[JPA는 인터페이스]
    ↓ 구현체
[Hibernate]  ← 가장 많이 사용 (사실상 표준)
[EclipseLink]
[DataNucleus]

Spring Data JPA는 JPA를 더 편리하게 쓸 수 있도록

Spring이 제공하는 추상화 레이어입니다.

Spring Data JPA
    └── JPA (표준 인터페이스)
            └── Hibernate (구현체)
                    └── JDBC
                            └── DB

ORM (Object-Relational Mapping) = 객체와 관계형 DB의 테이블을 자동으로 매핑해주는 기술

[Java 객체]  ←──── ORM ────→  [DB 테이블]
 Member                         MEMBER
  - id         ←──────────→     ID
  - name       ←──────────→     NAME
  - email      ←──────────→     EMAIL

ORM을 사용하면 개발자는 SQL이 아닌 객체에 집중할 수 있습니다.


JPA가 해결하는 문제들

SQL 자동 생성

// 이것만 작성하면
@Entity
public class Member {
    @Id @GeneratedValue
    private Long id;
    private String name;
    private String email;
    private String phone; // ← 필드 추가해도 SQL 수정 불필요!
}

// JPA가 알아서 처리
em.persist(member);   // → INSERT SQL 자동 생성
em.find(Member.class, id); // → SELECT SQL 자동 생성

객체 그래프 탐색 (지연 로딩)

Order order = em.find(Order.class, orderId);

// 실제로 접근할 때 SQL 실행 (Lazy Loading)
Member member = order.getMember(); // ← 이 시점에 SELECT 실행

영속성 컨텍스트 — 변경 감지 (Dirty Checking)

Member member = em.find(Member.class, id);
member.setName("새이름"); // ← setName만 해도

// 트랜잭션 종료 시 JPA가 자동으로 UPDATE SQL 실행!
// em.update() 같은 메서드 없음

MyBatis vs JPA 비교 분석

각 기술의 포지션

[SQL Mapper 계열]          [ORM 계열]
  iBatis / MyBatis    vs    JPA / Hibernate

  SQL을 직접 작성          SQL을 자동 생성
  SQL에 종속적             객체 중심
  학습 곡선 낮음            학습 곡선 높음

0개의 댓글