JPA는 Java Persistence API의 약자로, 자바 ORM 기술에 대한 API 표준 명세 를 의미한다. 즉 ORM 기술의 인터페이스들을 모아둔 것이다. 따라서 JPA를 사용하려면 JPA를 구현한 ORM 프레임워크를 선택해야한다. 현재 가장 대중적인 ORM 프레임워크는 Hibernate 이다.
JPA라는 표준 덕분에 특정 구현 기술에 대한 의존도를 줄일 수 있고 다른 구현 기술로 손쉽게 이동 할 수 있는 장점이 있다. 그리고 JPA 표준은 일반적이고 공통적인 기능의 모음이므로, 표준을 먼저 이해하고 필요에 따라 JPA 구현체가 제공하는 고유의 기능을 알아가는 식으로 공부하면 된다.
하이버네이트는 JPA 표준 명세의 구현체이다. 현 시점에서 JPA를 주도하는 프레임워크이기에 JPA와 혼용해서 사용하기도 하며, 2001년도에 공개된 후 지금도 발전하고 있는 성숙한 ORM 프레임워크이다.
하이버네이트는 SQL 매퍼인 MyBatis와 달리 직접 SQL을 사용하지 않고 직관적인 코드를 사용해 데이터를 조작할 수 있다.
Spring Data JPA는 Spring에서 제공하는 라이브러리 중 하나로, JPA를 쉽고 편하게 사용할 수 있도록 도와준다.
우리가 JPA를 사용하기 위해 JPARepository를 상속받은 Repository 인터페이스를 사용하는 것이 바로 Spring Data JPA를 통해 JPA를 사용한 것이다.
이 Repository 인터페이스에 정해진 규칙대로 메소드를 입력하면, Spring이 알아서 해당 메소드 이름에 적합한 쿼리를 날리는 구현체를 만들어서 Bean으로 등록해주기 때문에 우리는 더 간단하게 JPA를 이용할 수 있다.
JPA, Hibernate, Spring Data JPA를 그림으로 표현하면 다음과 같다.
