JPA란 무엇인가?

2024. 9. 21. 16:13·Spring
728x90

JPA(Java Persistence API)

- 자바 진영의 ORM 기술 표준어.

- 애플리케이션과 JDBC 사이에서 동작.

- 자바 ORM 기술에 대한 API 표준 명세.

 

ORM(Object-Relational Mapping) : 객체와 관계형 데이터베이스를 매핑한다.

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

 

ORM은 SQL을 단순히 개발자 대신 짜주는 것 뿐만 아니라 다양한 패러다임 불일치 문제를 해결하고, 정교한 객체 모델링을 도와준다.

ORM프레임워크들은 성숙도에 따라 단순한 CRUD 기능부터 패러다임 불일치 문제 해결까지 해주는 것들도 있다.

 

그중 자바 진영에서는 하이버네이트 프레임워크가 가장 많이 사용된다.

 

JPA를 통해서 특정 구현 기술에 대한 의존도를 줄일 수 있다. 예를 들어 Oracle을 쓰다가 MySQL로 갈아타는 경우 SQL을 수정할 필요가 없어서 좋다. JPA 표준은 일반적이고 공통적인 기능의 모음이기 때문이다.

 

왜 JPA 사용하는가?

1. 생산성

CRUD의 반복적인 기능 구현을 없애주기 때문에 생산적이다.

JPA에는 DDL문도 자동생성 해주는 기능도 있다.

이런 기능을 통해서 데이터베이스 설계 중심 패러다임에서 객체 설계 중심으로 역전 시킬 수 있다.

2. 유지보수

SQL을 직접다루면 수정해야하는 코드 부분이 많다.

반면 JPA를 사용하면 알아서 처리 해줌으로 수정 코드가 줄어든다.

패러다임 불일치 문제도 해결 해줌으로 유지보수 하기 좋은 도메인 모델을 편리하게 설계할 수도 있다.

3. 패러다임 불일치 해결

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

4. 성능

애플리케이션과 데이터베이스 사이에서 성능최적화 기회를 제공한다.

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

위의 코드에서 SQL을 직접사용하는 경우 쿼리를 두번 호출하지만, JPA를 사용하면 두번째는 조회한 객체를 재사용한다.

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

RDB는 같은 기능도 벤더마다 사용법이 다른 경우가 많다.

예를 들어 페이징 처리의 경우 DB마다 달라서 사용법을 각각 배워야 하고, 애플리케이션은 처음 선택한 DB 기술에 종속된다.

JPA는 추상화된 데이터 접근 계층(DAO)을 제공해서 애플리케이션이 특정 DB에 종속되는걸 막는다.

728x90

'Spring' 카테고리의 다른 글

JPA Application 개발  (0) 2024.09.21
데이터베이스 방언(dialect)  (1) 2024.09.21
JPA를 왜 쓰는가?  (1) 2024.09.21
오늘부터 JPA  (0) 2024.09.21
인텔리 제이 단축키  (0) 2024.01.15
'Spring' 카테고리의 다른 글
  • JPA Application 개발
  • 데이터베이스 방언(dialect)
  • JPA를 왜 쓰는가?
  • 오늘부터 JPA
Bello's
Bello's
개발하는 벨로
  • Bello's
    벨로의 개발일지
    Bello's
  • 전체
    오늘
    어제
    • 분류 전체보기 (199) N
      • 노예 일지 (7)
        • 스타트업 노예일지 (3)
      • CS 이론 (81)
        • 학과 수업 (4)
        • 알고리즘 (64)
        • 시스템 프로그래밍 (3)
        • 데이터 통신 (1)
        • 운영체제 (2)
        • 데이터베이스 (1)
      • project (3)
      • 나는 감자다. (4)
      • Spring (27)
      • 모각코 (45)
        • 절개와지조(모각코) (7)
        • 어쩌다보니 박준태가 조장이조 (11)
        • 어쩌다보니 박준태가 또 조장이조 (12)
      • LikeLion🦁 (20)
      • 캘리포니아 감자 (4)
      • OpenSource Contribute (1)
      • 우아한테크벨로 (1) N
        • 프리코스 회고록 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    누적합
    모각코
    Spring
    타임리프
    자바
    백준
    어렵다
    그래프 순회
    나는 감자
    8기
    프리코스
    절개와지조
    오블완
    DFS
    감자
    JPA
    뛰슈
    티스토리챌린지
    회고록
    BFS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
Bello's
JPA란 무엇인가?
상단으로

티스토리툴바