Spring Data JPA

Spring Data JPA 동작 과정

stophyeon 2024. 1. 10. 15:40
728x90

Spring Data JPA란

JPA란 Java에서 표준으로 사용하는 ORM입니다.
ORM이란 DB와 Application에서 사용하는 객체를 연결시켜주는 기능을 하는 것입니다.
JPA를 사용하기 쉽게 구현화한 것이 Hibernates입니다.
Hibernates중에서 가장 많이 사용하는 기능만을 묶어서 더 쉽게 사용할 수 있게
만들어 놓은 것이 Spring Data JPA입니다. 

 

Spring Data JPA 사용

우선 사용자와 DB사이의 Data의 흐름을 알아보겠습니다.

 

1. Client의 GET요청을 처리하는 Controller로 매핑
2. 매핑된 Controller에서 해당 Service를 호출
3. 호출된 Service에서 Service Logic을 실행해 DataBase에 어떤 Data를 꺼내올지 요청
4. 해당 Data를 Application에서 사용할 수 있게 객체의 형태로 매핑
5. 매핑된 객체를 사용자에게 반환하기 위해 DTO의 형태로 매핑후 Controller가 반환
여기서 JPA가 관여하는 부분은 3번과 4번입니다.
Service Logic이라는 것은 어떤 Data를 꺼내올지 DataBase에게 명령하는 부분입니다.
하지만 Spring은 프로그래밍 언어로 Java를 사용하고, DataBase는 SQL을 사용하는데 Java로 DataBase에게
명령을 할 수 없습니다. 

또한, 사용자에게 보내주거나 받은 입력값을 객체의 형태로 매핑을 했다고 해도 
결국 객체의 최종 목적지인 DataBase에는 객체를 넣을 수 없습니다.

이 과정을 가능하게 해주는 것이 Spring Data JPA입니다.
즉, JPA는 Spring Application에서 DataBase에 접근할 수 있게 해주는 것입니다.

 

Spring Data JPA가 구현하는 Class

JPA는 사용하기 쉽도록Annotation과 Interface기반으로 구현되어 있습니다.
JPA를 사용하는 방법은 간단합니다. Dependency에 JPA를 추가하는 것으로 JPA의 기능을 사용할 수 있습니다.
그렇다면 JPA의 Annotation을 어디에 선언하고 Interface를 어디에 상속시켜야 할까요 
위의 그림에 Repository와 Entity가 JPA가 사용되는 Class입니다.

 

Entity(domain)

Entiry란 DataBase의 Data가 매핑되는 객체입니다.
즉, DataBase의 Data에 대한 작업을 하기위해서는 Entity를 통해 작업을 하면 DB에 반영됩니다.

 

Repository

Entity로 DB의 Data를 매핑 시켰다면 DB의 어떤 Data를 가져올지 조회하고,
사용자에게 받은 Data를 DB에 어떻게 저장할 것인지 등을 구현해야 합니다.
이 기능을 정의하는 곳이 Repository입니다.