데이터베이스/JPA

[JPA] 기본개념, 동작과정, 특징

컴뀨 2022. 1. 10. 17:56

JPA

Java Persistence API 의 약자로 자바에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음이다. 즉, 실제적으로 구현된 것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크이다. JPA를 구현한 대표적인 오픈소스로는 Hibernate가 있다.

ORM(Object-Relational Mapping)과 SQL Mapper

  • ORM은 DB 테이블을 자바 객체로 매핑함으로써 객체간의 관계를 바탕으로 SQL을 자동으로 생성하지만 Mapper는 SQL을 명시해주야 한다.
  • ORM은 RDB의 관계를 Object에 반영하는 것이 목적이라면, Mapper는 단순히 필드를 매핑시키는 것이 목적이라는 점에서 지향점의 차이가 있다.

JDBC

  • JDBC는 DB에서 접근할 수 있도록 자바에서 제공하는 API이다.
  • 모든 Java Data Access 기술의 근간이다. ⇒ 모든 Persistance Framework는 내부적으로 JDBC API를 이용한다.

Spring-Data-JPA

  • Spring-Data-JPA는 JPA를 쉽게 사용하기 위해서 스프링에서 제공하고 있는 프레임워크이다.
  • 추상화 정도는 Spring-Data-JPA → Hibernate → JPA 이다.

JPA 동작 과정

JPA는 애플리케이션과 JDBC 사이에서 동작한다.

개발자가 JPA를 사용하면, JPA 내부에서 JDBC API를 사용하여 SQL을 호출하여 DB와 통신한다.

즉, 개발자가 직접 JDBC API를 쓰는 것이 아니다.

insert

MemberDAO에서 객체를 저장하고 싶을 때 개발자는 JPA에 Member 객체를 넘긴다.

JPA는

  1. Member Entity를 분석한다.
  2. INSERT SQL을 생성한다.
  3. JDBC API를 사용하여 SQL을 DB에 날린다.

find

개발자는 member의 pk 값을 JPA에 넘긴다.

JPA는

  1. Entity의 매핑정보를 바탕으로 적절한 SELECT SQL을 생성한다.
  2. JDBC API를 사용하여 SQL을 DB에 날린다.
  3. DB로부터 결과를 받아온다.
  4. 결과(ResultSet)를 객체에 모두 매핑한다.

쿼리를 JPA가 만들어주기 때문에 Object와 RDB 간의 패러다임 불일치를 해결할 수 있다.

JPA 특징

  1. 데이터를 객체지향적으로 관리할 수 있기 때문에 개발자는 비즈니스 로직에 집중할 수 있고 객체지향 개발이 가능하다.
  2. 자바 객체와 DB 테이블 사이의 매핑 설정을 통해 SQL을 생성한다.
  3. 객체를 통해 쿼리를 작성할 수 있는 JPQL(Java Persistance Query Language)를 지원
  4. JPA는 성능 향상을 위해 지연 로딩이나 즉시 로딩과 같은 몇가지 기법을 제공하는데 이것을 잘 활용하면 SQL을 직접 사용하는 것과 유사한 성능을 얻을 수 있다.

[참고] https://goddaehee.tistory.com/209

[참고] https://dbjh.tistory.com/77

[참고] https://velog.io/@adam2/JPA는-도데체-뭘까-orm-영속성-hibernate-spring-data-jpa