ORM(Object Relational Mapping)
이란?📌 객체-관계 매핑
Object : 객체(자바)
Relational : DB
ORM
의 존재 이유?백엔드 개발자가 비즈니스 로직 개발보다 SQL 작성에 더 많은 노력을 들여야한다.
SQL 작성이 단순하고 반복적인데 실수하기는 쉽다.
웹 서버 개발 언어와 관계형 데이터베이스 언어의 목적 및 사용 방법이 다르다.
JPA(Java Persistence API)
📌 자바 ORM 기술에 대한 표준 명세
자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스. (특정 기능을 하는 라이브러리가 아니다.)
JPA가 없으면 직접 SQL 문을 작성해서 구현이 가능하다.
전 세계적 트렌드
Hibernate
📌 JPA는 표준 명세, hibernate은 이를 실제 구현한 프레임워크.
즉, 인터페이스를 직접 구현한 라이브러리.
JPA와 Hibernate은 마치 자바의 interface와 해당 interface를 구현한 class와 같은 관계.
hibernate는 JPA의 구현체
사실상 표준(비공식적인 표준)
Spring Data JPA
📌 JPA를 쓰기 편하게 만들어놓은 모듈.
Repository가 Spring Data JPA의 핵심.
JPA와 다르다.
JPA를 편리하게 사용하기 위해 스프링에서 JPA를 wrapping
스프링 개발자들이 JPA를 사용할 때 필수적으로 생성해야 하나 예상 가능하고 반복적인 코드들은 Spring Data JPA가 대신 작성한다.
Repository 인터페이스만 작성하면 필요한 구현은 스프링이 대신 알아서 한다.
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods
참고 | JPA, Hibernate, 그리고 Spring Data JPA의 차이점