Spring/JPA

[Spring/JPA] JPA 소개

오잎 클로버 2022. 5. 25. 08:20
728x90

※ 본 글은 저자 김영한 개발자의 "자바 ORM 표준 JPA 프로그래밍"의 내용을 요약하였습니다. ※

과거 엔터프라이즈 자바 빈즈(이하 EJB)라는 기술 표준이 있었는 데, 그 안에도 엔티티 빈이라는 ORM 기술이 있었다.

하지만, 너무 복잡하고 J2EE 애플리케이션 서버에서만 동작하였기에 오픈소스 ORM 프레임워크, Hibernate(하이버네이트)가 등장하였다. 하이버네이트는 EJB의 ORM에 비해 가볍고, 기술 성숙도가 높으며, J2EE 애플리케이션 서버없이도 동작하였기에 결국, EJB 3.0에서 하이버네이트를 기반으로 새로운 자바 ORM 기술 표준을 만들었는 데, 바로 JPA이다.

 

JPA를 사용하는 이유는 다음과 같으며, 이유의 9할은 JPA의 등장배경과 관련이 깊다.

  • 생산성: JCP(자바 컬렉션 프레임워크)에 객체를 저장하듯이 JPA에게 객체를 전달하는 방식을 사용하므로서 기존 귀찮던 JDBC API를 사용하지 않아도 된다. 또, CRUD용 SQL를 개발자가 직접 구현하지 않아도 되며, DDL문 역시 자동화가 되면서, 데이터베이스 설계 중심의 패러다임을 객체 설계 중심으로 역전시켜주었다.
  • 유지보수: SQL에 의존적이지 않기때문에 코드 수정에 유연하다. 그렇기에 유연하고 유지보수가 좋은 도메인 모델를 편하게 설계할 수 있게 해주었다.
  • 패러다임 불일치 해결: JPA는 상속, 연관관계, 객체, 그래프 탐색, 비교하기 등의 패러다임의 불일치 문제를 해결해주었다.
  • 성능: 애플리케이션과 데이터베이스 사이에서 다양한 성능 최적화 기회를 제공하였다. 참고로 하이버네이트는 SQL 힌트를 넣을 수 있는 기능 역시 제공한다.
  • 데이터 접근 추상화와 벤더 독립성: 벤더마다 사용법이 다달랐던 기존 방식과 달리 추상적인 데이터 접근 계층을 사용하여, 특정 데이터베이스 기술에 종속되지 않도록 한다.
  • 표준: 특정 구현기술에 의존도가 낮으며, 다른 기술 구현 역시 손쉬어졌다.

 

JPA가 어렵다는 평가를 받는 이유는 다음과 같다.

  • 학습 곡선이 높은 편이다.
  • 객체와 관계형 데이터베이스를 어떻게 매핑하는 지 알아야한다.
  • 영속성 컨텍스트에 대해 알아야한다.

하지만 위 이유보다는 다음과 같은 이유가 더 클 것이다.

ORM자체가 객체지향과 데이터베이스라는 두 기둥 위에 있기때문이다.

 

 

이상입니다.

JPA 59/735페이지