Close
Close full mode
logo만렙 개발자 키우기

(3) JPA란 무엇인가

Git RepositoryEdit on Github
Last update: 9 months ago by nowwaterReading time: 2 min

JPA란 무엇인가?

JPA(Java Persistence API) 는 자바 진영의 ORM 기술 표준이다

어플리케이션과 JDBC 사이에서 동작한다.

image

ORM (Object Relational Mapping)

객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해준다.

덕분에 개발자는 데이터 중심인 관계형 데이터베이스를 사용해도 객체지향 애플리케이션 개발에 집중할 수 있다.

객체를 저장하는 코드

객체를 DB에 저장할 때 INSERT SQL을 직접 작성하는 것이 아니라 객체를 마치 자바 컬렉션에 저장하듯이 ORM 프레임워크에 저장.

jpa.persist(member); // 저장

image

객체를 조회하는 코드

Member member = jpa.find(memberId); // 조회

image


1.3.1 JPA 소개

엔터프라이즈 자바 빈즈 (EJB) 3.0 에서 하이버네이트를 기반으로 새로운 자바 ORM 기술 표준이 만들어졌는데 이것이 바로 JPA이다.

JPA는 자바 ORM 기술에 대한 API 표준 명세이다.

따라서 JPA를 사용하려면 JPA를 구현한 ORM 프레임워크를 선택해야 한다.

image

JPA 라는 표준 덕분에 특정 구현 기술에 대한 의존도를 줄일 수 있고 다른 구현 기술로 손쉽게 이동할 수 있는 장점이 있다.

JPA 표준은 일반적이고 공통적인 기능의 모음이다.


1.3.2 왜 JPA를 사용해야 하는가?

생산성

  • JPA를 자바 컬렉션에 객체를 저장하듯 JPA에게 저장할 객체를 전달.
  • INSERT SQL을 작성하고 JDBC API 사용하는 지루하고 반복적인 일을 JPA가 대신 처리해준다.
  • CREATE TABLE같은 DDL문 자동 생성
  • 데이터베이스 설계 중심의 패러다임을 객체 설계 중심으로 역전
jpa.persist(member); // 저장
Member member = jpa.find(memberId); // 조회

유지보수

  • 엔티티에 필드 추가시 등록, 수정, 조회 관련 코드 모두를 자동으로 변경한다.
  • JPA를 사용하면 이런 과정을 JPA가 대신 처리한다.
  • 개발자가 작성해야 할 SQL과 JDBC API 코드를 JPA가 대신 처리해줌으로 유지보수해야 하는 코드 수가 줄어든다.

패러다임 불일치 해결

상속, 연관관계, 객체 그래프 탐색, 비교하기(동일성(==), 동등성(equals())) 같은 패러다임 불일치 문제를 해결해준다.

성능

  • 다양한 성능 최적화 기회 제공
  • 어플리케이션과 데이터베이스 사이에 존재하여서 여러 최적화 시도 가능
  • JDBC API를 사용해서 회원을 조회하면 할 때 마다 SELECT SQL을 사용해서 DB와 두 번 통신해야 하는 반면,
    JPA를 사용하면 회원 조회 SELECT SQL을 한 번만 데이터베이스에 전달하고 두 번째는 조회한 회원 객체를 재사용한다.

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

  • 데이터베이스 기술에 종속되지 않도록 한다.
  • 데이터베이스를 변경하면 JPA에게 다른 데이터베이스를 사용한다고 알려주면 됨.

image

표준

  • 자바 진영의 ORM 기술의 표준이다.
Previous
(2) 패러다임의 불일치
Next — 🚀 JPA
2장. JPA 시작