JPA 학습 내용 1

hwanse·2021년 2월 26일
0

JPA

목록 보기
1/1

학습 목표

  1. JPA란
  2. JPA 장점


JPA란

JPA는 자바 ORM 기술에 대한 API 표준 명세이다. 이는 인터페이스들을 모아둔 것으로 사용하기 위해서는 JPA 구현체인 ORM 프레임워크를 선택해서 사용해야한다.


JPA 등장 배경
애플리케이션이 발전할수록 내부 복잡도는 점차 증가하게 된다. 복잡성이 증가할수록 이를 제어하지 못하면 유지보수가 어려워지는 애플리케이션이된다. 이러한 문제를 풀어 내기 위해서 많은 기업들은 객체지향 프로그래밍으로 풀어내 이러한 복잡도를 제어하고 유연한 애플리케이션을 구축한다.
그러나 객체지향 모델과 관계형 데이터베이스 모델이 지향하는 패러다임은 서로 다르다. 서로 지향점이 다르기 때문에 정교한 객체지향 모델링을 할수록 관계형 데이터베이스와의 패러다임 불일치 문제가 증가한다. 자바 진영에서는 이러한 불일치 문제를 해결하기 위해 JPA가 등장하게 되었고 JPA를 통해 더 정교한 객체 모델링 유지를 하면서 관계형 데이터베이스와의 패러다임을 불일치 문제를 해소할 수 있게 되었다.

ORM 프레임워크

  • 하이버네이트
  • EclipseLink
  • DataNucleus


JPA 장점

1. 생산성
SQL 의존적인 개발 방식에서 벗어나 CRUD용 SQL을 개발자가 직접 작성하지 않아도 되고 JPA 구현체가 이러한 SQL을 JPA가 대신 처리해준다. 더 나아가 DDL 문도 자동으로 생성해주는 기능을 지원한다.

2. 유지보수
SQL 의존적인 개발 시 요구사항이 변경되면 테이블 컬럼이 변경되면 이와 연관된 모든 SQL을 모두 직접 수정해야했다. 그러나 JPA를 사용하면 JPA가 대신 처리해주기 때문에 테이블의 컬럼이 추가, 삭제를 해도 유지보수할 포인트가 줄어든다.

3. 패더다임 불일치 해결
기존 SQL 중심 개발 시 가져가기 힘들었던 객체지향 모델링의 이점들을 JPA를 통해 풀어냈다.
JPA를 통해 상속, 연관관계, 객체 그래프 탐색, 비교하기 등 SQL 의존적 개발을 벗어나게 되니 이러한 이점들이 생겨났다.

4. 성능
JPA는 애플리케이션과 데이터베이스 사이에서 동작하기 때문에 최적화 관점에서 새로운 시도를 할 수 있게되었다. 예로 SQL 의존적 개발 시 같은 Key값을 가진 특정 데이터를 같은 트랜잭션 내에서 여러번 호출한다고 가정했을 때, 그 횟수만큼 DB와 통신을 해야했었다. 그러나 JPA는 같은 트랜잭션 내에서라면 이 데이터를 캐싱하고 재사용이 가능해졌다.

5. 데이터 접근 추상화 및 DB 벤더 독립성
DB는 각 벤더사 마다 사용법이 달라 각 벤더사 특유의 사용법을 숙지해야했다. 그러나 JPA는 특정 DB에 종속되지 않도록 기능을 제공한다. 기존에 SQL 의존 개발 시 시스템의 DB가 변경되면 기존 DB에서만 호환되는 SQL문들을 새로운 DB에 맞춰 변경을 해주어야 한다. 이럴 경우는 없겠지만 만약에 규모가 큰 시스템의 DB 벤더를 변경하게 된다면 유지보수 시 끔찍한 상황이다. JPA는 DB가 변경되어도 설정 값만 바꿔주면 JPA가 자동으로 처리해준다.

profile
만사가 귀찮은 ISFP가 쓰는 학습 블로그

0개의 댓글