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