ORM, JPA, 그리고 Spring Data JPA (개념)

김형준 Kim Hyeong Jun·2022년 12월 5일
1
post-thumbnail

ORM 이란?

Object Relational Mapping, 객체 - 관계 맵핑

  • ORM(Object-Relational Mapping)이란 자바의 객체와 관계형 DB를 맵핑하는 것으로 DB의 특정 테이블이 자바의 객체로 맵핑되어 SQL문을 일일이 작성하지 않고 객체로 구현할 수 있도록 하는 프레임워크입니다

객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다.
객체 모델과 관계형 모델가의 불일치가 존재하는데,
ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다.

  • 데이터베이스 데이터 <- 맵핑 -> Object 필드

객체를 통해 간접적으로 데이터베이스 데이터를 다룬다.

  • Persistant API 라고도 할 수 있다.

JPA, Hibernate 등

JPA 란?

  • 자바 진영에서 ORM 기술 표준으로 사용하는 인터페이스 모음이다.
  • 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다.
  • JPA란 Java Persistence API의 약자이며 자바의 ORM을 위한 표준 기술로 Hibernate, Spring JPA, EcliplseLink 등 과 같은 구현체가 있고 이것의 표준 인터페이스가 JPA 입니다.

JPA는 반복적인 CRUD SQL을 처리해준다. JPA는 매핑된 관계를 이용해서 SQL을 생성하고 실행하는데, 개발자는 어떤 SQL이 실행될지 생각만하면 되고, 예측도 쉽게 할 수 있다. 추가적으로 JPA는 네이티브 SQL이란 기능을 제공해주는데 관계 매핑이 어렵거나 성능에 대한 이슈가 우려되는 경우 SQL을 직접 작성하여 사용할 수 있다.

JPA를 사용하여 얻을 수 있는 가장 큰 것은 SQL아닌 객체 중심으로 개발할 수 있다는 것이다. 이에 따라 당연히 생산성이 좋아지고 유지보수도 수월하다. 또한 JPA는 패러다임의 불일치도해결하였다.

Spring Data JPA 란?

  • JPA를 한 단계 더 추상화 시켜 개발 용이성을 상당히 올려주는 인터페이스이다.
  • Spring Data JPA 는 Repository라는 인터페이스를 제공한다.
    Repository는 정해진 규칙으로 인터페이스를 선언하기만 해도 자동으로 내부에서 구현체를 만들어 동작시켜준다.
  • Repository인터페이스의 기본 구현체인 SimpleJpaRepository의 내부를 보면 EntityManager를 사용하고 있습니다. 이를 통해 Spring Data JPA는 JPA를 추상화 시켰다는 것을 알 수 있습니다.

profile
I want be a developer🙂

1개의 댓글

comment-user-thumbnail
2022년 12월 5일

좋은정보 감사합니다~

답글 달기