ORM, JPA, Spring Data JPA

Dasole Kwon·2022년 6월 1일
0

항해99

목록 보기
25/47

ORM (Object-Relational Mapping)

  • 서버의 프로그래밍 언어와 DB 언어 중간에서 통역사 역할을 해 줌
    - Object: "객체"지향 언어 (자바, 파이썬)
    - Relational: "관계형"

데이터베이스 (H2, MySQL)객체(Object)와 관계형 데이터를 매핑하기 위한 기술. 객체지향 언어와 데이터베이스 사이에 패러다임 불일치(서로 표현 방식이 다름)로 인한 문제를 해결해준다. 이 둘 간의 패러다임 불일치 때문에 개발자는 더 많은 코드를 작성해야 하며, 이는 반복적이고 실수하기 쉬운 작업이 된다. 그렇기 때문에 개발자는 객체지향적인 설계에 집중 할 수 없게 된다.

ORM을 이용하면 SQL Query가 아닌 직관적인 코드로서 데이터를 조작할 수 있다.

JPA(Java Persistence API)

  • 자바 ORM 기술에 대한 표준 명세
  • 즉, 자바 언어를 사용해 ORM 을 사용 가능하도록 만든 표준 명세

JPA는 애플리케이션과 JDBC사이에서 동작하며 개발자가 직접 JDBC API를 사용하지 않게 JPA가 JDBC API를 사용하여 SQL을 호출하여 DB와 통신한다. JPA는 특정 기능을 하는 라이브러리가 아니며 자바 어플리케이션에서 관계형 데이터베이스를 어떻게 사용해야 하는지를 정의하는 한 방법일 뿐이다.

  • 대표적인 프레임워크가 하이버네이트(hibernate)
    :JPA를 구현한 프레임워크 중 사실상 표준이다. 오픈소스 소프트웨어이며, JPA는 기술스펙이고 하이버네이트는 이 기능을 구현하여 공급해주는 역할이다.

Spring Data JPA

  • JPA 를 편리하게 사용하기 위해, 스프링에서 JPA 를 Wrapping
  • 스프링 개발자들이 JPA 를 사용할 때 필수적으로 생성해야 하나, 예상 가능하고 반복적인 코드들 → Spring Data JPA 가 대신 작성
  • Repostiory 인터페이스만 작성하면, 필요한 구현은 스프링이 대신 알아서 척척해줌

스프링 프레임워크에서 JPA를 편리하게 사용할 수 있도록 지원하는 모듈이다. 예상 가능하고 반복적인 코드들을 대신 작성해줘 코드를 줄여준다. 이는 JPA를 한 단계 추상화시킨 Repository라는 인터페이스를 제공함으로써 이루어진다. 사용자가 Repository인터페이스에 정해진 규칙해도 메소드를 입력하면 Spring이 알아서 해당 메소드 이름에 적합한 쿼리를 날리는 구현체를 만들어서 Bean으로 등록 해준다.
Spring Data JPA는 항상 hibernate와 같은 jpa provider가 필요하다.

참고: 링크텍스트

0개의 댓글