[2] JPA로 데이터베이스 다루기

dev_beom·2021년 3월 17일
0

Java-Spring

목록 보기
2/2

MyBatis, iBatis는 ORM이 아니다. SQL Mapper이다.
가끔은 ORM에 대해 MyBAtis, iBatis를 얘기하게 되는데 이 둘은 ORM이 아니다.
ORM은 객체를 매핑하는 것이고, SQL Mapper는 쿼리를 매핑한다.
ORM(Object Relational Mapping)

JPA 소개

서로 지향하는 바가 다른 2개 영역(객체지향 프로그래밍 언어와 관계형 데이터베이스)을 중간에서 패러다임 일치를 시켜주기 위한 기술.
즉, 개발자는 객체지향적으로 프로그래밍을 하고, JPA가 이를 관계형 데이터베이스에 맞게 SQL을 대신 생성해서 실행한다.
개발자는 항상 객체지향적으로 코드를 표현할 수 있으니 더는 SQL에 종속적인 개발을 하지 않아도 된다.

Spring Data JPA

JPA는 인터페이스로서 자바 표준명세서다.
인터페이스인 JPA를 사용하기 위해서는 구현체가 필요하다.
대표적으로 Hibernate, Eclipse Link등이 있다.
하지만 Spring에서 JPA를 사용할 때는 이 구현체들을 직접 다루진 않는다.

구현체들을 좀 더 쉽게 사용하고자 추상화시킨 Spring Data JPA라는 모듈을 이용하여 JPA 기술을 다룬다.
이들의 관계를 보면 다음과 같다.

  • JPA ← Hibernate ← Spring Data JPA

Hibernate를 쓰는 것과 Spring Data JPA를 쓰는 것 사이에는 큰 차이가 없다.
그럼에도 스프링 진영에서는 Spring Data JPA를 개발했고, 이를 권장하고 있다.

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

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

먼저 '구현체 교체 용이성'이란 Hibernate 외에 다른 구현체로 쉽게 교체하기 위함이다.

Hibernate가 언젠가 수명을 다해 새로운 JPA 구현체가 대세로 떠오를 때,
Spring Data JPA를 쓰는 중이라면 아주 쉽게 교체할 수 있다.
Spring Data JPA 내부에서 구현체 매핑을 지원해주기 때문이다.

다음으로 '저장소 교체의 용이성'이란 관계형 데이터베이스 외에 다른 저장소로 쉽게 교체하기 위함이다.
서비스 초기엔 관계형 데이터베이스로 모든 기능을 처리했지만,
점점 트래픽이 많아져 관계형 데이터베이스로는 도저히 감당이 안될 때가 올 수 있다.
이 때 MongoDB로 교체가 필요하다면 개발자는 Spring Data JPA에서
Jpring Data MongoDB로 의존성만 교체하면 된다.
이는 Spring Data의 하위 프로젝트들은 기본적인 CRUD의 인터페이스가 같기 때문이다.

profile
개발 초보

0개의 댓글