JPA(Java Persistence API)
JPA는 자바 진영의 ORM 기술 표준, 인터페이스이다.
JPA는 아래 그림처럼 애플리케이션과 JDBC 사이에서 동작한다.



JPA는 객체와 관계형 데이터베이스의 패러다임 불일치를 해결한다.
여기서 패러다임 불일치란, 객체지향과 관계형 데이터베이스의 세계가 서로 생각하는 방식이 달라서 생기는 문제들을 의미한다.
1. 상속 문제
2. 연관관계 문제
3. 데이터 타입 문제
4. 동일성 문제
가 패러다임 불일치의 예시가 될 수 있다.
ORM(Oriented-Relational Mapping)
객체와 관계형 데이터베이스를 매핑한다는 뜻이다.
ORM 프레임워크를 사용하면 객체를 데이터베이스에 저장할 때 INSERT SQL을 직접 작성하는 것이 아니라 객체를 마치 자바 컬렉션에 저장하듯이 ORM 프레임워크에 저장하면 된다. 그러면 ORM 프레임워크가 적절한 INSERT SQL을 생성해서 데이터베이스에 객체를 저장해준다.
단점이라고 하면 복잡한 SQL 튜닝은 어렵다. 또한 N+1 문제 같은 성능 이슈가 생길 수 있다.
Hibernate(하이버네이브)
JPA의 구현체로 JPA를 실제로 동작하도록 구현한 라이브러리이다.
'Spring' 카테고리의 다른 글
| [Spring] AOP(Aspect Oriented Programming) (0) | 2025.08.11 |
|---|---|
| [Spring] 영속성 컨텍스트(Persistence Context) (3) | 2025.08.11 |
| [Spring] IoC(Inversion of Control)와 DI(Dependency Injection) (2) | 2025.08.08 |
| [Spring] 레이어드 아키텍처(Layered Architecture)와 Spring MVC (0) | 2025.08.05 |
| [Spring] DispatcherServlet과 스프링부트 동작 구조 (3) | 2025.07.26 |
