JPA란?

유호경·2024년 3월 18일

JPA는 인테페이스로서 자바 표준명세서다.

인터페이스인 JPA를 사용하기 위해서는 구현체가 필요한데 대표적으로 Hilbernate가 있다.

구현체를 더 쉽게 사용하기 위해 추상화시킨 Spring Data JPA라는 모듈을 이용하여 JPA 기술을 다룬다.

이것들의 관계를 보면 다음과 같다.

Spring Data JPA -> Hilbernate -> JPA

이렇게 한단계 더 감싸놓은 Spring Data JPA가 등장한 이유는 크게 두가지 있다.

구현체의 용이성
저장소 교체의 용이성

구현체 교체의 용이성이란 Hilberntate 외에 다른 구현체로 쉽게 교체하기 위함이다.

언젠가 Hilbernate가 수명을 다해서 새로운 JPA 구현체로 교체해야 할때 Spring Data JPA를 사용중이라면 아주 쉽게 교체가 가능하다.

Spring Data JPA 내부에서 구현체 매핑을 지원해주기 때문이다.

다음으로 저장소 교체의 용이성이란 관계형 데이터베이스 외에 다른 저장소로 쉽게 교체하기 위함이다.

서비스 초기에는 관계형 데이터베이스로 모든 기능을 처리했지만, 점점 트래픽이 많아져 관계형 데이터베이스로는 도저히 감당이 안될 때가 올 수 있다.

이때 다른 RDBMS로 교체가 필요하다면 Spring Data JPA에서 Spring Data "XXXX"로 의존성만 교체하면 된다.

이는 Spring Data의 하위 프로젝트들은 기본적인 CRUD 인터페이스가 같기 때문이다.

즉 Spring Data JPA, Spring Data Redis, Spring Data MongoDB 등 Spring Data의 하위 프로젝트들은 save(), findAll((), findOne() 등을 인터페이스로 갖고 있다.

그러다보니 저장소가 교체되어도 기본적인 기능은 변경할 것이 없다. 이런 장점들로 인해 Hilbernate를 직접 쓰기보다는 Spring 쪽에서 Spring Data 프로젝트를 권장하고 있다.

이번 프로젝트에서 Spring Data JPA를 사용하면서 JPA와 관련된 내용들을 찾아보고 있는데

entity를 통해서 객체지향적인 프로그래밍을 가능하게 해준다 정도만 알고 있었는데

myBatis와는 차이점이 분명한 것 같다. 어떤 차이점이 있고 왜 사용하는지에 대해서 정확히 알고 사용할 필요가 있을 것 같아 jpa의 특징에 대해서 조금씩 포스팅해봐야겠다.

[참조] 스프링부트와 AWS로 혼자 구현하는 웹 서비스

https://www.yes24.com/Product/Goods/83849117

profile
하면된다.

0개의 댓글