JPA(Java Persistence API)

iy·2024년 1월 21일

Java-JPA

목록 보기
1/12

ORM

  • Object Relational Mapping
  • 객체와 관계형 데이터베이스를 매핑
  • ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 해결해줌
    - 객체 측면에서 정교한 객체 모델링 가능
    • 매핑 방법만 ORM 프레임워크에 알려주면 됨

예시 : ORM 프레임워크 사용시 객체를 데이터베이스에 저장할 때 SQL INSERT문을 직접 작성하는 것이 아닌 객체를 마치 자바 컬렉션에 저장하듯 ORM 프레임워크에 저장하면 됨 그렇게 되면 ORM 프레임워크가 적절한 INSERT SQL을 생성해 데이터베이스에 저장해줌

  • 자바 진영에 많은 ORM 프레임워크들이 있는데 그 중 하이버네이트 프레임워크를 가장 많이 사용함

JPA

  • 자바 진영의 ORM 기술 표준 API 명세서
  • 애플리케이션과 JDBC 사이에서 동작
  • 하이버네이트 기반 새로운 자바 ORM 기술

JPA를 사용해야 하는 이유

  1. 생산성
jpa.persist(member); // JPA 사용 객체 저장 코드
Memeber member = jpa.find(memberId); // JPA 사용해서 객체 조회 코드

JPA를 사용하면 이렇게 저장할 객체를 전달만 하면 됨 SQL 작성과 JDBC API를 사용하는 일과 같은 반복적인 일은 JPA가 알아서 처리해주기 때문에 코드를 줄일 수 있음

  1. 유지보수

SQL을 직접 다루면 엔티티에 필드를 하나만 추가해도 관련된 등록, 수정, 조회 SQL과 결과를 매핑하기 위한 JDBC API를 모두 직접 변경해줘야 함

JPA의 사용은 이런 과정을 대신 처리해주기 때문에 필드를 추가하거나 삭제해도 수정해야 할 코드가 줄어듬 > 유지보수 해야 할 코드 수가 줄어듬

  1. 패러다임의 불일치 해결
  • JPA는 상속, 연관관계, 객체 그래프 탐색, 비교하기와 같은 패러다임의 불일치 문제를 해결해줌
  1. 성능
String memberId = "helloId";
Member member1 = jpa.find(memberId);
Member member2 = jpa.find(memberId);

이렇게 같은 회원을 두번 조회할 일이 있을 때 JDBC API를 사용했다면 회원을 조회할 때마다 SELECT SQL을 사용해 데이터베이스와 두번 통신을 해야 함

JPA를 사용하면 회원 조회하는 SELECT SQL은 한 번만 데이터베이스에 전닿하고 두번째는 조회한 회원 객체를 사용하면됨

  1. 데이터 접근 추상화와 벤더 독립성
  • 관계형 데이터베이스는 같은 기능도 벤더마다 사용법이 다른 경우가 많아 사용법을 각각 배워야 함

    JPA는 애플리케이션과 데이터베이스 사이에 추상화된 데이터 접근 계층을 제공해서 애플리케이션이 특정 데이터베이스 기술에 종속되지 않도록 함
    - 데이터베이스 변경시 JPA에 다른 데이터베이스 사용을 알리기만 하면 됨

  1. 표준
  • JPA는 자바 진영의 ORM 기술 표준이므로 이를 사용하면 다른 구현 기술로 손쉽게 변경 가능함

📘 참고 도서 : 자바 ORM 표준 JPA 프로그래밍 (저자 김영한)

0개의 댓글