CS/JPA
JPA & Hibernate
leah-only
2025. 6. 4. 17:11
🍃 JPA(Java Persistence API) 란?
자바 진영의 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스 모음
즉, 실제적으로 구현된 것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크
JPA를 구현하는 대표적인 오픈소스는 Hibernate가 있다.
ORM(Object-Relational Mapping)
class 와 RDB의 테이블을 매핑한다는 뜻이며
기술적으로는 객체를 RDB 테이블에 자동으로 영속화 해주는 것으로 보면 된다.
- 애플리케이션과 JDBC 사이에서 동작
- DB와 자바 객체 매핑을 위한 인터페이스(API)를 제공
❓JPA를 왜 사용할까?
- SQL 중심적인 개발에서 객체 중심으로 개발
- 반복적인 CRUD SQL을 처리해줌
✅ 장점
- SQL문이 아닌 Method를 통해 DB를 조작하여 객체 모델을 이용하여 비즈니스 로직을 구성하는데만 집중 가능
- 내부적으로 쿼리를 생성하여 DB를 조작하기 때문에 개발자는 신경 쓰지 않아도
- 객체지향적인 코드 작성 가능
- DB를 변경해야 하는 경우 새로 쿼리를 짜지 않아도 됨
- ex) MySQL → PostgreSQL로 변환한다고 가정 시, 쿼리 수정이 필요가 X
- 매핑하는 정보가 Class로 명시되었기 때문에 ERD를 보는 의존도를 낮출 수 있음
⛔ 단점
- 프로젝트 규모가 크고 복잡하여 설계가 잘못된 경우, 속도 저하 및 일관성에 문제 발생 가능
- 복잡하고 무서운 Query는 속도를 위해 별도의 튜닝이 필요하기 때문에 SQL을 써야할 수도 있음
Hibernate 란?
JPA의 구현체로 JPA의 인터페이스를 구현하며 내부적으로 JDBC API를 사용한다.
참고 : https://github.com/devSquad-study/2023-CS-Study/blob/main/JPA/jpa_hibernate.md