이상준님, 정리하신 내용을 기반으로 JPA와 Spring Data JPA 개념을 초보자도 쉽게 이해할 수 있도록 보완 정리해드리겠습니다. 실생활 비유와 예제 코드, 요약표, 다음 학습 주제 제안도 포함하였습니다.
JPA(Java Persistence API)는
자바 객체와 데이터베이스 테이블을 매핑(ORM)하기 위한 자바의 표준 인터페이스입니다.
SQL을 직접 작성하지 않고도 자바 코드로 DB와 상호작용할 수 있게 해주는 ORM 기술
| 특징 | 설명 |
|---|---|
| ORM 지원 | 객체와 테이블 간 자동 매핑 |
| JPQL | SQL 유사한 객체 지향 쿼리 언어 |
| CRUD 자동 제공 | save(), findById() 등 기본 메서드 |
| 지연 로딩(LAZY) | 필요한 시점에 데이터 로딩 |
| 영속성 컨텍스트 | 엔티티 생명주기 관리 |
| 변경 감지(Dirty Checking) | 값을 바꾸면 자동 업데이트 |
| 트랜잭션 지원 | 일관된 데이터 처리 가능 |
데이터베이스 = 창고
자바 객체 = 포장된 물건
JPA = 포장을 해주는 택배 시스템
Spring Data JPA는 JPA를 더 쉽게 사용할 수 있도록 만든 Spring 프레임워크 기반의 확장 기술입니다.
| 특징 | 설명 |
|---|---|
| 리포지토리 추상화 | 인터페이스만 정의하면 구현체 자동 생성 |
| 메서드 이름 기반 쿼리 | findByNameAndAge()와 같이 메서드 이름만으로 쿼리 가능 |
| 페이징 & 정렬 | Pageable, Sort 지원 |
| 커스텀 JPQL 작성 | 직접 쿼리 작성도 가능 (@Query) |
| 트랜잭션 자동 관리 | @Transactional 기본 적용 |