[Spring] JPA 개념과 장단점

sue·2022년 8월 21일
0

Spring

목록 보기
1/2

JPA (Java Persistence API)

언젠간 JPA 개념 정리를 꼭 하려고 했는데 이제야 정리를 하게 됐다.
아직 공부해야 할 게 많지만 일단은 개념과 장단점 위주로 정리를 했다.

1. JPA의 개념

  • Java persistence API는 자바의 ORM 기술의 표준
  • JPA는 java ORM에 대한 API 표준 명세이며 인터페이스의 모음
  • 구현체가 따로 없으며 ORM 프레임워크를 선택하여 사용
  • ORM 프레임워크 종류
    • Hibernate, EclipseLink, DataNucleus 등

ORM

  • Object-Relational Mapping
  • 객체와 관계형 데이터베이스를 Mapping 한다는 의미
  • 객체와 테이블을 매핑해 패러다임의 불일치를 개발자 대신 해결
    • 객체는 객체대로 생성하고 데이터베이스는 데이터베이스에 맞도록 설계가 가능하게 함
    • 개발자는 Mapping 하는 방법만 전달

2. JPA의 탄생 배경

  • 반복적인 SQL 사용
    • ex) 테이블이 100개 존재한다면 100개의 CRUD를 작성
  • SQL 의존적 개발
    • ex) 테이블에 하나의 Column 추가 시 모든 SQL 변경 필요
  • DAO와 테이블의 강한 의존성
  • 객체지향의 장점을 사용하지 않고 객체를 단순히 데이터 전달 목적(VO, DTO)에만 사용
    • 객체지향적이지 못함

3. JPA의 장점

  • 생산성
    • Hibernate는 SQL을 직접 사용하지 않음
      • 메서드 호출만으로 쿼리를 수행
        ➡️ SQL 반복 작업을 하지 않으므로 생산성 향상
  • 유지보수
    • 테이블 칼럼 변경 시 이전에는 SQL을 모두 확인 후 수정 필요
    • JPA는 JPA가 대신 작업을 수행하므로 유지보수 측면에서 장점이 있음
  • 특정 벤더에 종속적이지 않음
    • 여러 DB 벤더 (MySQL, Oracle 등) 마다 다른 SQL을 사용하기 때문에 DB 변경이 어려움
    • JPA는 추상화된 데이터 접근 계층을 제공하여 특정 벤더에 종속적이지 않음
      • 어떤 DB를 사용하고 있는지만 설정하면 얼마든지 DB 변경이 가능

4. JPA의 단점

  • 성능
    • 메서드 호출로 쿼리를 실행하는 건 내부적인 동작이 많다는 의미
    • 직접 SQL을 호출하는 것보다 성능이 낮을 수 있음
  • 러닝커브
    • JPA를 사용하기 위해서는 학습해야 할 것들이 많음
    • JPA를 사용해도 SQL을 알아야 Hibernate가 수행한 쿼리 확인 및 성능 모니터링이 가능함

참고

profile
All is well ! 🔥

0개의 댓글