JPA란 무엇인가?

Doyeon·2023년 2월 6일
0
post-thumbnail

JPA

JPA란 무엇인가?

  • JPA(Java Persistence API)
  • 자바 ORM 기술 표준으로 사용되는 인터페이스의 모음
  • 영구적으로 데이터를 저장하기 위해 필요한 인터페이스를 제공해준다.
  • 인터페이스이므로 JPA를 구현한 ORM 프레임워크인 Hibernate, EclipseLink, DataNucleus를 사용한다.
  • 자바를 해석하고 매핑한 데이터 베이스에 맞게 SQL쿼리를 보내주는 역할을 한다.
  • 애플리케이션과 JDBC 사이에서 동작한다.
    • 개발자가 JPA를 사용하면, JPA 내부에서 JDBC API를 사용하여 SQL 쿼리를 DB로 보낸다.

ORM이란?

  • ORM(Object Relational Mapping) : 객체와 관계형 데이터베이스를 매핑한다.
  • 객체 코드를 이용해서 DB 데이터 테이블을 생성할 수 있게 해준다.
  • 객체는 객체대로 설계하고, 관계형 데이터베이스는 관계형 데이터베이스대로 설계한 후, ORM 프레임워크가 중간에서 매핑한다.

JPA 사용 이유

  • 생산성
    • 자바 컬렉션에 객체를 저장하듯이 JPA에게 저장할 객체를 전달하면, 알아서 쿼리를 자동으로 만들어준다.
    • CRUD가 간단하다.
  • 유지보수
    • SQL 의존성이 줄어든다. → JPA가 알아서 SQL을 생성해 DB에 전달하고, 객체를 자동으로 매핑해준다.
    • 필드를 추가하거나 삭제해도 쿼리 수정이나 매핑 작업 등을 JPA가 알아서 해주기 때문에 유지보수해야 하는 코드 수가 줄어든다.
  • 패러다임 불일치 해결
    • 기존 데이터베이스 설계 중심의 패러다임을 객체 설계 중심으로 역전시킬 수 있다.
  • 성능
    • 애플리케이션과 데이터베이스 사이에서 다양한 성능 최적화 기회를 제공한다.
    • 1차 캐시와 동일성(identity) 보장 - 캐싱 기능
      • 같은 트랜잭션 안에서는 같은 엔티티를 반환 → SQL 쿼리 횟수 줄일 수 있다.
    • 트랜잭션을 지원하는 쓰기 지연(transactional write-behind) - 버퍼링 기능
      • 커밋하는 순간, 쌓아놓은 SQL을 모아서 데이터베이스에 보낸다.
    • 지연 로딩(Lazy Loading)
      • 객체가 실제로 사용될 때 로딩하는 전략
  • 데이터 접근 추상화와 벤더 독립성
    • 애플리케이션과 데이터베이스 사이에 추상화된 데이터 접근 계층을 제공한다. → 특정 데이터베이스 기술에 종속되지 않는다.
    • H2, mySql, oracle 등 관계형 DB이자 표준을 준수한 SQL을 지원한다면, 어떤 데이터베이스든 사용 가능하다.

[참고]
<자바 ORM 표준 JPA 프로그래밍>
[JPA] JPA란 - Heee's Development Blog

profile
🔥

0개의 댓글