JPA는 무엇인가?

Jae Hun Lee·2023년 2월 7일
0

JPA

JPA(Java Persistence API)란?

  • 자바 진영의 ORM 기술 표준
  • JPA가 제공하는 API를 사용하면 객체를 DB에 저장하고 관리할 때, 개발자가 직접 SQL을 작성하지 않아도 된다.
  • JPA가 개발자 대신 적절한 SQL을 생성해서 DB에 전달하고, 객체를 자동으로 Mapping 해준다.
  • JPA 는 Java Persistence(영속성) API 입니다. 여기서 Persistence란, 사전적 의미로 "영속성"을 의미하며, 데이터가 (없어지지 않고 오랜동안) 지속됨을 의미한다.

    Java Persitance API 는 "자바에서 데이터를 영구히 기록할 수 있는(DBMS에) 환경을 제공하는 API"

ORM (Object Relational Mapping)

  • ORM(Object-Relational Mapping)은 객체와 관계형 데이터베이스를 매핑한다는 뜻이다. ORM 프레임워크는 객체와 테이블을 매핑하여 패러다임 불일치 문제를 개발자 대신 해결해준다.
  • ORM 프레임워크를 사용하면 객체를 마치 자바 컬렉션에 저장하듯 저장할 수 있고, 이에 대해 ORM 프레임워크가 적절한 SQL을 생성해서 DB에 객체를 저장해준다.

Hibernate

  • 자바 진영의 다양한 ORM 프레임워크 중 가장 많이 사용되는 프레임워크이다.
  • 하이버네이트 ORM(Hibernate ORM)은, 자바 언어를 위한 객체 관계 매핑 프레임워크로, 객체 지향 도메인 모델을 관계형 데이터베이스로 매핑하기 위한 프레임워크를 제공한다.

Spring Data JPA

  • 스프링부트에서 사용하는 JPA는 Spring Data JPA로, JPA를 더 쉽게 사용하기 위해 스프링에서 제공하고 있는 프레임워크이다.
  • Spring Data JPA는 JPA를 쓰기 편하게 만들어 놓은 모듈로 개발자가 JPA를 더 쉽고 편하게 사용할 수 있도록 도와준다. 이는 JPA를 한단계 추상화 시킨 Repository라는 인터페이스를 제공함으로써 이루어진다. 사용자가 Repository 인터페이스에 정해진 규칙대로 메소드를 입력하면, Spring이 알아서 해당 메소드 이름에 적합한 쿼리를 날리는 구현체를 만들어 Bean으로 등록해준다.

    Spring Data JPA Query Method
    https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods

사용이유

  • 생산성이 증가한다
    • DDL문 자동생성, 간단하게 CRUD가 가능 등
  • 유지보수
    • 필드를 추가하거나 삭제 시 맵핑이나 쿼리수정을 JPA가 대신 처리함으로 수정할 코드가 줄어든다
  • 패러다임 불일치 해결
    • 상속, 연관관계, 객체 그래프 탐색, 비교하기와 같은 패러다임의 불일치 문제를 해결해준다.
  • 성능
    • JPA는 애플리케이션과 데이터베이스 사이에서 다양한 성능 최적화 기회를 제공한다. JPA는 애플리케이션과 데이터베이스 사이에서 동작한다 이렇게 애플리케이션과 데이터베이스 사이에 계층이 하나 더 있으면 최적화 관점에서 시도해 볼 수 있는 것들이 많다.
  • 데이터 접근 추상화와 벤더 독립성
    • 애플리케이션과 데이터베이스 사이에 추상화된 데이터 접근 계층을 제공한다. → 특정 데이터베이스 기술에 종속되지 않는다.
    • H2, mySql, oracle 등 관계형 DB이자 표준을 준수한 SQL을 지원한다면, 어떤 데이터베이스든 사용 가능하다.

참조

JPA란?
JPA란 무엇인가?
[Spring] JPA의 이해(JPA, Hibernate)
[JPA] JPA란 무엇인가?

profile
기록을 남깁니다

0개의 댓글