개발의 시작과 끝
2023.09.18 / JPA, Hibernate, Spring Data JPA 차이 본문
JPA(Java Persistence API)
- 자바를 사용하여 DB와 상호 작용하기 위한 자바의 ORM 기술 중 하나.
- DB 테이블과 자바 객체 간의 매핑 지원.
- 개발자가 SQL 쿼리를 직접 작성하지 않고도 DB 조작이 가능.
- 객체 지향 프로그래밍의 장점을 유지하며 DB 액세스 코드를 작성할 수 있어 개발 생산성 향상.
- ORM을 사용하기 위한 인터페이스를 모아둔 것.
- JPA를 사용하기 위해선 JPA를 구현한 Hibernate, EclipseLink, DataNucleus 같은 ORM 프레임워크를 사용해야 함.
- 단순히 명세이기 때문에 구현이 없음.
Hibernate
- 자바 언어 기반의 ORM 프레임워크.
- JPA라는 명세의 구현체.
- Hibernate는 마치 자바의 interface와 해당 interface를 구현한 class와 같은 관계.
- 관계형 데이터베이스와 자바 객체 간의 매핑을 제공하는 오픈 소스 라이브러리.
- DB와 상호 작용을 추상화하고 개발자가 SQL 쿼리를 직접 작성하지 않고도 DB 조작을 수행할 수 있도록 도움.
Spring Data JPA
- Spring 프레임워크와 JPA를 함께 사용하는 더 추상화된 라이브러리.
- Spring Data 프로젝트의 일부로 제공.
- DB와 상호 작용을 더 쉽고 효율적으로 만들어 주는 여러 기능을 제공.
- JPA를 한 단계 추상화시킨 Repository라는 인터페이스를 제공함으로써 이루어짐.
- 사용자가 Repository 인터페이스에 정해진 규칙대로 메소드를 입력하면,
Spring이 알아서 해당 메소드 이름에 적합한 쿼리를 날리는 구현체를 만들어서 Bean으로 등록.
참고
- https://velog.io/@alicesykim95/JPA-ORM-JDBC-Hibernate%EB%9E%80
- https://suhwan.dev/2019/02/24/jpa-vs-hibernate-vs-spring-data-jpa/
'IT 용어' 카테고리의 다른 글
2023.09.19 / 템플릿 엔진, 타임리프 (0) | 2023.09.19 |
---|---|
2023.09.18 / 자바 스트림 (0) | 2023.09.18 |
2023.09.16 / ORM (0) | 2023.09.16 |
2023.09.16 / API, 라이브러리, 프레임워크 (0) | 2023.09.16 |
2023.09.15 / 스프링 시큐리티(Spring Security) (0) | 2023.09.15 |