JPA (Java Persistence API)

  • Java ORM 기술에 대한 API 표준 명세를 말한다

  • JPA를 구현한 것이 Hibernate이다. 가장 범용적으로 사용

  • ORM이란 Object Relational Mapping의 약자이다

    프로그래밍 언어의 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 도구이다.

장점

  • 1차캐시, 쓰기지연, 변경감지, 지연로딩을 제공하여 성능상 이점을 얻을 수 있다.
  • 코드 레벨로 관리 되므로 사용하기 용이하고 생산성이 높다.
  • 컴파일 타임에 오류를 확인할 수 있다.
  • 데이터베이스에 종속적이지 않으므로 특정 쿼리를 사용하지 않아 추상적으로 기술 구현이 가능하다.
  • 엔티티로 관리되므로 스키마 변경시 엔티티만 수정하게 되면 엔티티를 사용하는 관련 쿼리는 자동으로 변경된 내역이 반영된다.
  • 개발 초기에는 쿼리에 대한 이해가 부족해도 코드 레벨로 어느 정도 커버가 가능하다.
  • 객체지향적으로 데이터를 관리할 수 있다.
  • 부족한 부분은 다양한 쿼리 빌더와 호환하여 보안할 수 있다.

단점

  • JPA만 사용하여 복잡한 연산을 수행하기에는 다소 무리가 있다. (로직이 복잡하거나 불필요한 쿼리가 발생할 수 있다.
  • 초기에는 생산성이 높을 수 있으나 점차 사용하다 보면 성능상 이슈가 발생할 수 있다.(N+1, FetchType, Proxy, 연관관계)
  • 고도화 될수록 학습 곡선이 높아질 수 있다. (성능 이슈의 연장선으로 해결 방안에 따라 복잡한 내부 로직을 이해해야 할 필요가 있다)

댓글남기기