JPA란?
우선 JPA를 알기 전에 ORM에 대해 먼저 알아보아야 할 것 같습니다.
1. ORM ( Object Relational Mapping )
- 객체와 데이터베이스의 관계를 연결시켜 주는 것
데이터를 저장하기 위해 사용하는 것은 데이터베이스입니다.
객체지향프로그래밍에서 사용하는 기본 단위는 오브젝트라 불리우는 기본 객체입니다.
이렇게 눈으로 보게 된다면 Member 테이블의 Name은 Member 객체의 Name filed에 매핑되면 될 것 처럼 보이나,
컴퓨터는 이 관계를 어떻게 연결시켜줄 수 있을까요?
객체와 데이터베이스의 관계를 연결시켜주는 것을 ORM이라 합니다.
2. JPA(Java Persistance API)
- 데이터에 접근하기 위한 API 규격을 정의한 것입니다.
현재 자바진영의 ORM 기술 표준으로 채택되어있습니다.
데이터에 접근하기 위한 API 규격을 정의한 것입니다.
ORM이 전체적인 개념이라 한다면 JPA는 좀 더 구체적으로 그 기능을 정리한 스택이라 할 수 있습니다.
3. Hibernate
JPA에 대한 실제 구현체, 흔히 말하는 Implementation입니다.
이클립스 링크등의 다른 JPA provider가 있지만 현재 자바에서 사용하는 것은 기본적으로 Hibernate 구현체입니다.
4. Spring Data JPA
- Spring에서 hibernate를 좀 더 편하게 사용할 수 있도록 수상객체를 한 번 더 감싸서 만들어 놓은 것
Spring Data JPA에서 제공하는 방식을 사용하여 실제로 Entity Manage에 접근하지 않고도 데이터에 대한 접근을 좀 더 쉽고 객체지향적으로 사용할 수 있습니다.
정리
- 어플리케이션과 DB를 연결시켜주는 것이 ORM라는 개념
- 자바진영에서는 ORM의 표준스택으로 JPA라는 것을 인터페이스로 정의하고 제공하고 있음.
- 해당 JPA 실제 구현 클래스들을 모아둔 것이 Hibernate
- 그 중 자주 사용하는 기능들을 좀 더 사용하기 쉽도록 Spring Framework에서 다시 한 번 더 묶음으로 제공하는 것이 Spring data JPA