출처 : https://velog.io/@jinyoungchoi95/JPA-모든-N1-발생-케이스과-해결책
[<https://lealea.tistory.com/238>](<https://lealea.tistory.com/238>)
<aside>
📖 [LIST]
</aside>
JPA( Java Persistence API)
- 자바 객체-관계 매핑(ORM)을 위한 표준 명세인 인터페이스
- 특정 기능을 하는 라이브러리가 아닌 인터페이스라는 점입니다.
- 자바 애플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의
- 단순한 명세이기에 구현은 없고, 다양한 ORM 프레임워크(예: Hibernate, EclipseLink, OpenJPA 등)에서 구현할 수 있는 공통 API를 제공합니다.
Hibernate
- **JPA의 구현체(**인터페이스를 직접 구현한 라이브러리)
- JPA와 Hibernate 관계는 자바의 interface와 해당 interface를 구현한 class와 같은 관계
- JPA의 모든 기능을 지원하며 Hibernate는 객체와 관계형 데이터베이스 간의 매핑을 자동으로 처리해서 개발자가 일일이 SQL 쿼리를 작성하지 않도록 도와줌
- SQL을 사용하지 않고 직관적인 코드(메소드)를 사용해 데이터를 조작
- SQL을 직접 사용하지 않지만 JDBC API를 사용하지 않는 것은 아니고 지원하는 메소드 내부에서는 JDBC API가 동작하고 있으며, 단지 개발자가 직접 SQL을 작성하지 않을 뿐 이다.

<aside>
💡
JPA를 사용하기 위해서 반드시 Hibernate'만'을 사용할 필요가 없고 다른 JPA 구현체(**EclipseLink, Apache OpenJPA )**를 사용할 수 있음.
</aside>
장점
단점
Spring Data JPA
- JPA 기반 애플리케이션 개발을 보다 간편하게 만드는 라이브러리/프레임워크
- 즉, Spring Data JPA는 Spring에서 제공하는 모듈 중 하나로, JPA 위에 추가적인 기능을 제공하여 JPA 기반 애플리케이션 개발을 보다 간편하게 만드는 라이브러리/프레임워크