[JPA #1] JPA란 무엇인가?

.·2024년 7월 3일

JPA

목록 보기
1/6

JPA란 무엇인가?

JPA는 자바 진영의 ORM(Object-RelationalMapping)기술 표준으로 사용되는 인터페이스의 모음

(JPA는 애플리케이션과 JDBC 사이에서 동작)

  • 자바 ORM 기술에 대한 표준 명세로, JAVA 에서 제공하는 API이다.
  • ORM으로 자바 클래스와 DB테이블을 매핑한다.

ORM이란?

  • ORM은 객체와 관계형 데이터베이스를 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결

⇒ 즉, ORM 프레임워크는 개발자 대신 SQL을 생성해주고 패러다임 불일치 문제들을 해결해줌으로써 객체 측면에서의 정교한 객체지향 모델링을 가능하게 해준다.

  • 패러다임 불일치 문제란?
    객체 지향 언어와 관계형 데이터베이스 간의 구조적, 개념적 차이로 인해 발생하는 문제
    EX) 상속, 연관 관계, OOP 등

jpa.persist(member) ⇒ JPA 저장

jpa.find(id) ⇒ JPA 조회

JPA 소개

  • 하이버네이트를 기반으로 새로운 자바 ORM 기술 표준이 만들어졌는데 이것이 바로 JPA

JPA를 사용해야 하는 이유

1. 생산성

  • 자바 컬렉션에 객체를 저장하듯이 JPA에 저장
  • 지루하고 반복적인 CRUD용 SQL을 개발자가 직접 작성하지 않아도 된다.
  • DDL문 자동 생성 기능

2. 유지보수

  • SQL에 의존적인 개발은 엔티티에 필드 하나만 추가해도 JDBC API코드를 모두 변경해야하는 번거로움이 있었다. 반면, 이런 과정을 JPA가 대신 처리해주므로 유지보수해야 하는 코드수가 줄어든다.
  • JPA가 패러다임의 불일치 문제를 해결해주므로 객체지향 언어가 가진 장점들을 활용해서 유연하고 유지보수하기 좋은 도메인 모델을 편리하게 설계가 가능하다.

3. 패러다임 불일치 해결

  • 상속, 연관관계, 객체, 그래프 탐색, 비교 문제의 패러다임 불일치 문제 해결

4. 성능

String memberId = "helloId";
Member member1 = jpa.find(memberId);
Member member2 = jpa.find(memberId);
   
  • 위 처럼 같은 회원을 두 번 조회하는 코드가 있을 때, JDBC API는 조회할 때마다 데이터베이스와 통신했을 것이다. 하지만 JPA는 한 번만 데이터 베이스에 전달하고 그 다음은 재사용하여 최적화한다.

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

  • JPA는 그림과 같이 특정 데이터베이스에 종속되지 않도록 한다.
  • 만약 데이터베이스를 변경하면 JPA에게 변경 여부만 알려주기만 하면 된다.

6. 표준

  • JPA는 자바 진영의 ORM 표준이기 때문에 다른 구현 기술로 손쉽게 변경 가능하다.
profile
Tech

0개의 댓글