Spring Boot로 프로젝트를 진행하면서
JPA를 활용해 코드를 작성하다보면 코드가 간결해져서
효율적으로 시간 분배하며 프로젝트를 진행할 수 있었다.
가끔은 하드코딩으로 처음세팅과 DB 연결부터
쿼리 작성까지했던 MyBatis가 조금은 그립다는 생각을 했다.
JPA를 다룰줄은 아는데, 내가 알고 있는 개념이 모호한 것 같아서
정확한 이해도를 잡기 위해 JPA 연관 기능들의 개념과 차이점을 정리해본다.
JPA, Spring Data JPA, Hibernate
- 모두 자바에서 관계형 데이터베이스와 상호 작용하기 위한 기술이지만 서로 다른 개념과 역할을 갖고 있다.
JPA (Java Persistence API)
- Java에서 데이터베이스와 상호 작용하는 자바 표준 API
- 데이터베이스 테이블과 자바 객체 간의 매핑을 처리하며, 객체 지향 프로그래밍과 관계형 데이터베이스 간의 매핑을 담당
- 인터페이스와 추상 클래스로 이루어져 있으며, 구현체는 제공하지 않음.
대표적인 JPA 구현체 : Hibernate, EclipseLink, Apache OpenJPA 등
Hibernate
- JPA 스펙을 구현한 JPA 구현체 중 하나
- JPA를 구현한 라이브러리로서, JPA 스펙을 준수하면서도 JPA 스펙 외의 기능과 확장성을 제공
- 영속성 관리, 객체와 테이블 간의 매핑, 데이터베이스 쿼리 작성 및 실행, 캐싱 등을 제공
Spring Data JPA
- Spring 프레임워크와 JPA를 결합하여 사용하기 쉽게 만든 프로젝트
- 개발자가 JPA를 더 쉽게 사용하고 반복적인 작업을 줄이도록 돕는 목적으로 만들어졌습니다.
- JPA 리포지토리를 생성하고, 쿼리 메소드를 정의하며, 데이터베이스 액세스 작업을 단순화합니다.
요약
JPA | 자바 표준 데이터베이스 액세스 API |
Hibernate | JPA 구현체 중 하나 |
Spring Data JPA | Spring 프레임워크와 JPA를 연동하여 JPA를 더 쉽게 사용할 수 있도록 돕는 프로젝트 |
개발 환경과 요구사항에 따라 이러한 기술을 선택하고 결합하여 사용하면 된다.
참고하면 좋을 레퍼런스
https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html
'Backend > Spring' 카테고리의 다른 글
[Spring Boot] Jasypt로 프로퍼티 암호화하기 (1) | 2023.10.23 |
---|---|
[Spring] 객체 지향 프로그래밍 설계 5대 원칙, SOLID (0) | 2023.10.12 |
[Spring] Gradle / Maven, (Gradle의) Kotlin / Groovy (0) | 2023.09.19 |
[Spring] 컨트롤러에서 파라미터 받는 방법 (0) | 2023.08.10 |
[Spring] 인프런 강의 - 인텔리제이 (0) | 2023.08.09 |