[Spring JPA] JPA(Java Persistence API)란?

2024. 11. 21. 14:54·CS/CS 면접 준비
728x90

1. JPA(Java Persistence API)란?

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

즉, 실제로 구현된 것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크

 

JPA가 개발자 대신 SQL을 자동으로 생성하고 객체를 매핑해줌으로써 객체지향적으로 개발할 수 있게 도와준다.

 

Java에서 사용하는 대표적인 ORM으로는 JPA와 그의 구현체 Hibernate가 있다. JPA가 등장하기 전에는 MyBatis라는 Object Mapping 기술을 이용하였는데, MyBatis는 Java 클래스 코드와 직접 작성한 SQL 코드를 매핑 시켜주어야 했다.

하지만! JPA와 같은 ORM기술은 객체가 DB에 연결되기 때문에 SQL을 직접 작성하지 않는다.

따라서 JPA라는 ORM 기술에 의해 DB에서 조회한 데이터들이 객체로 연결되어 있고, 객체의 값을 수정하는 것은 DB의 값을 수정하는 것이라고 할 수 있다.

 

2. ORM (Object-Relational Mapping) 이란?

클래스와 RDB의 테이블을 매핑해준다는 뜻

 

장점

1. SQL문이 아닌 Method를 통해 DB를 조작할 수 있어 개발자는 객체 모델을 이용해 비즈니스 로직 구성에만 집중 가능

(내부적으론 쿼리 생성해서 DB 조작하지만, 개발자가 신경쓰지 않아도 되어 개발비용 줄어듬)

2. 매핑하는 정보가 Class로 명시되어 있어 ERD 보는 의존도 낮출 수 있고, 특정 DB에 대한 종속성이 줄어들어 유지보수 및 리팩토링에 유리

3. 코드 가독성, 재사용성, 유지보수성이 좋아짐

 

단점

1. 복잡한 쿼리는 해결하기 어려움. 이 경우 JPQL사용하거나 SQL Mapper 혼용해서 사용

2. 프로젝트 규모 크고 복잡해 설계가 잘못된 경우, 속도 저하 및 일관성 무너뜨리는 문제점 발생 가능

 

좌: 조회 우: 저장

 

JPA는 수정 메소드를 제공하지 않는다. 대신 데이터 수정시, 매핑된 객체(테이블 데이터)를 조회해서 값을 변경한 후 커밋하면 DB서버에 UPDATE문 전송해 UPDATE실행.

 

3. JPA를 사용한 이유?

1. MyBatis는 쿼리가 수정되어 데이터 정보가 바뀌면 그에 사용되고 있던 DTO와 함께 수정해주어야 하지만, JPA는 객체만 바꾸면 됨

2. 클래스마다 sql문을 작성하니 중요한 로직을 한 눈에 파악하기 어렵고 복잡했다.

3. 유지보수면과 유연성, 확장성 면에서 JAP를 선택.

 

 

<참고>

https://dbjh.tistory.com/77

 

[Spring JPA] JPA 란?

이번 글에서는 JPA(Java Persistence API)가 무엇인지 알아보려고한다. JPA는 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음이다. 그 말은 즉, 실제적으로 구현된것이

dbjh.tistory.com

 

728x90

'CS > CS 면접 준비' 카테고리의 다른 글

[Spring] Spring Boot vs Spring  (1) 2024.11.21
[네트워크] REST API란?  (0) 2024.11.21
'CS/CS 면접 준비' 카테고리의 다른 글
  • [Spring] Spring Boot vs Spring
  • [네트워크] REST API란?
DROPDEW
DROPDEW
💻 Developer | 기록하지 않으면 존재하지 않는다
  • DROPDEW
    제 2장 1막
    DROPDEW
  • 전체
    오늘
    어제
    • categories (401)
      • App/Android (1)
      • BE (36)
        • HTTP 웹 기본 지식 (8)
        • 스프링 입문 - 코드로 배우는 스프링 부트, 웹 .. (12)
        • 스프링부트와 JPA 활용 (3)
        • 스프링부트 시큐리티 & JWT (0)
        • PHP (6)
      • FE·Client (23)
        • HTML (1)
        • React (19)
        • Unity (1)
      • Data (12)
        • AI (4)
        • Bigdata (6)
        • Database (1)
        • 빅데이터분석기사 (0)
      • Infra (0)
      • CS (7)
        • CS 면접 준비 (3)
      • 취준 (13)
        • 자격증·인턴·교육 (4)
        • 인적성·NCS (6)
        • 코테·필기·면접 후기 (3)
      • 코테 (268)
        • Algorithm (220)
        • SQL (35)
        • 정리 (13)
      • 인사이트 (27)
        • 금융경제뉴스 (7)
        • 금융용어·지식 (2)
        • 북마크 (7)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    오블완
    그래프이론
    그래프탐색
    투포인터
    다이나믹프로그래밍
    백준
    문자열
    누적합
    브루트포스 알고리즘
    수학
    자료구조
    그리디알고리즘
    너비우선탐색
    매개변수탐색
    티스토리챌린지
    정렬
    시뮬레이션
    이분탐색
    구현
    최단경로
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
DROPDEW
[Spring JPA] JPA(Java Persistence API)란?
상단으로

티스토리툴바