JPA(Java Persistence API)
자바 객체와 관계형 데이터베이스 간의 매핑을 처리하는 API
- 자바 객체를 데이터베이스와 연결해주는 표준 규칙
- 복잡한 SQL 없이, 자바 객체로 데이터베이스 조작 가능
- 객체 지향 프로그래밍을 할 때 데이터베이스를 직접 다루지 않고, 객체로 처리 가능
- 자바 개발자들이 persistence 문제를 쉽게 처리할 수 있도록 도와주는 API
Persistence(영속성)
- 어플리케이션에서 생성한 데이터를 영구적으로 저장하고 유지하는 것
- 어플리케이션을 다시 실행해도 데이터가 유지되는 이유
Hibernate
- JPA를 구현한 대표적인 프레임워크
- 객체와 데이터베이스 간의 매핑 처리하는 데 도움을 줌
- 데이터베이스와 자바 객체를 매핑하는 데 집중할 필요 X
- Hibernate API 사용하여 DB에서 정보를 읽고 쓸 수 있음
python의 SQLAlchemy와 비슷한 역할을 함
ORM(Object-Relational mapping)
- 객체(자바 클래스)와 테이블(데이터베이스)를 자동으로 연결해주는 통역사
- SQL 없이 데이터를 쉽게 저장하고 불러올 수 있음
Spring Data JPA

JPA를 Spring Framework에 적용한 것으로, 데이터베이스와의 상호작용을 쉽게 처리할 수 있는 기술
JPARepository
- Spring Data JPA에서 제공하는 인터페이스
- 데이터베이스와 연동하여 CRUD 작업을 수행하는 데에 사용됨
제공 메소드
Create
- save(entity): 새로운 엔티티 저장/기존 엔티티 업데이트
- saveAll(entities): 여러 개의 엔티티 한 번에 저장
Read
- findById(id): 주어진 ID에 해당하는 엔티티 찾기
- findAll(): 모든 엔티티 조회
Update
- save(entity): 새로운 엔티티를 저장하거나, 기존 엔티티를 업데이트
- saveAll(entities): 여러 개의 엔티티를 한 번에 저장
Delete
- delete(entity): 주어진 엔티티 삭제
- deleteById(id): ID에 해당하는 엔티티 삭제
Annotation
@Entity
@ID
@GeneratedValue
@Column