JPA란?

Charm dong·2022년 1월 7일
0

JPA

목록 보기
1/4

JPA란?

Java Persistence API로, 자바 진영의 ORM 기술 표준을 말한다. JPA는 애플리케이션과 JDBC 사이에서 동작한다. 

ORM이란?

1. Object-Relation Mapping 이름 그대로 객체와 관계형 데이터베이스를 매핑함을 의미한다.
2. ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자를 대신해 해결해준다.
3. 개발자는 객체 측면에서는 정교한 객체 모델링을 할 수 있게 되고, 관계형 데이터베이스는 데이터베이스에 맞도록 모델링을 할 수 있다. 그리고 이 둘을 매핑하는 방법만 ORM 프레임워크에게 알려주면 된다.
-> 개발자는 데이터 중심의 관계형 데이터베이스를 사용해도 객체지향 애플리케이션 개발에 집중할 수 있게 된다.

JPA는 자바 ORM 기술에 대한 API 표준 명세이며, 쉽게 말해 인터페이스의 집합이라고 볼 수 있다. 이러한 표준 덕분에 특정 구현 기술에 대한 의존도를 줄일 수 있고 다른 구현 기술로 쉽게 이동할 수 있다는 장점을 제공한다. 

JPA를 왜 사용해야 하는가?

1. 생산성

간단한 CRUD SQL처럼 JDBC API를 사용하는 지루하고 반복적인 일을 JPA가 대신 처리해준다.
JPA에는 'CREATE TABLE' 같은 DDL문을 자동으로 생성해주는 기능도 존재한다. 이런 기능들을 사용하면 데이터베이스 설계 중심의 패러다임을 객체 설계 중심으로 역전시킬 수 있다.

2. 유지보수

SQL을 직접 다루면 Entity에 필드 하나를 추가해도 관련된 CRD SQL과 결과를 매핑하기 위한 JDBC API를 모두 변경해야 한다. 하지만 JPA를 사용하게 되면 필드를 추가하거나 삭제해도 수정해야할 코드가 줄어든다. 따라서 객체지향 언어가 가진 장점들을 활용해서 유연하고 유지보수하기 좋은 도메인 모델을 편리하게 설계할 수 있다.

3. 패러다임의 불일치 해결

JPA는 상속, 연관관계, 객체 그래프 탐색, 비교하기와 같은 패러다임의 불일치 문제를 해결해준다.

4. 성능

JPA는 애플리케이션과 데이터베이스 사이에서 동작하며 다양한 성능 최적화 기회를 제공한다. 

String memberId = "hello";
Member member1 = jpa.find(memberId);
Member member2 = jpa.find(memberId);

위의 경우 JPA를 사용하게 되면 회원을 조회하는 SELECT SQL을 한 번만 데이터베이스에 전달하고 두 번째는 앞서 조회한 회원 객체를 사용하게 된다. 

5. 데이터 접근 추상화와 벤더 독립성

관계형 데이터베이스는 같은 기능도 벤더마다 사용법이 다른 경우가 많다. JPA는 애플리케이션과 데이터베이스 사이에 추상화된 데이터 접근 계층을 제공함으로써 애플리케이션이 특정 데이터베이스 기술에 종속되지 않도록 해준다. 데이터베이스를 변경하더라도 JPA에게 어떤 데이터베이스를 사용하는지 알려주기만 하면 된다.

  • 참고 문헌: 자바 ORM 표준 JPA 프로그래밍 (김영한 지음)
profile
자유롭고 싶은 개발자

0개의 댓글