JPA란 무엇인가

김득회·2022년 5월 29일
0

JPA

목록 보기
1/11

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

ORM이라는 것은 Object-Relational Mapping으로 객체와 관계형 DB를 매핑 한다는 뜻이다.

Spring 프레임워크를 사용시 Mybatis를 사용하면 SQL을 직접 작성해야하지만 JPA는 객체를 자바 컬렉션에 저장하듯이 ORM 프레임워크에 저장하면 프레임워크가 적절하게 SQL을 생성하여 DB에 접근한다.

자바진영에서 사용하는 ORM 프레임워크 중 하이버네이트 프레임워크가 가장 많이 사용된다.
하이버네이트는 패러다임 불일치 문제를 해결해준다.

패러다임 불일치?

객체와 DB는 바라보고 있는 목적이 다르다.
DB는 철저히 데이터 중심으로 설계가 되어있는데, 패러다임 불일치는 객체와 관계형 DB의 표현방식과 다루는 방법이 달라 일어나는 현상이다.

따라서 객체와 DB 양측의 불일치를 해결해서 DB 의존성 문제를 해결하는 것이 중요하다.

JPA 사용 이유

  1. 생산성
    • JPA를 사용하면 반복적인 코드와 CURD용 SQL을 개발자가 직접 작성하지 않아도 된다.
    • Create Table과 같은 DDL문장을 자동 생성 해주는 기능을 지원한다.
    • 해당 기능을 사용하면 DB 설계 중심의 패러다임을 객체 설계 중심으로 역전시킬 수 있다.

  2. 유지보수
    • SQL에 의존적인 개발에서 벗어나서 개발이 가능
    • SQL을 직접 다루면 엔티티 필드를 하나만 추가해도 JDBC API 코드를 모두 변경해야했다 하지만 JPA를 사용하면, 이런 과정을 모두 JPA가 대신 처리해줌으로 유지보수 비용이 줄어든다.

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

  4. 성능
    • JPA는 자바 애플리케이션과 DB사이에서 다양한 성능 최적화 기회를 제공한다.
    • 같은 데이터를 조회하는 부분이 2번이상 있으면 JPA에서는 한번만 SQL을 DB에 전달하고 객체를 재사용하여 성능을 최적화 한다.

  5. 데이터 접근 추상화와 벤더 독립성
    • 관계형 DB는 다양한 종류가 있고 각 DB마다 사용법이 다른 경우가 많다. 문법도 다르고 함수가 다른 경우도 많다. 때문에 이미 작성된 SQL문장으로 인해 다른 DB로 변경하기는 매우 어렵다.
    • 하지만 JPA는 추상화된 데이터 접근 계층을 제공하여 특정 DB기술에 종속되지 않도록 한다. JPA에게 다른 DB를 사용한다고 알려주기만 하면된다.

profile
감성 프로그래머 HoduDeuk

0개의 댓글