[Spring] JPA 기본

gwonsang247·2023년 7월 31일
0

Java

목록 보기
5/11

JPA란?

JPA "Java Persistence API"란 자바의 ORM(Object-Relation Mapping)을 위한 JAVA 표준 API기술이다.
먼저 ORM이란 객체와 관계형 데이터베이스를 맵핑(연결)하는 것으로 DB의 특정 테이블이 자바의 객체로 맵핑되어 일일이 작성하지 않고 객체로 구현할 수 있도록 하는 프레임워크이다.

ORM : 객체와 RDB(관계형 데이터베이스)를 연결
JPA 구현체 : HIBERNATE, OpenJpa, EclipseLink, DataNucles
Persisitence(영속성) : 애플리케이션 종료 후에도 객체(데이터)가 유지되는 것

위 그림을 보면 JAVA Spring의 기본 ORM 프레임워크인 HIBERNATE이다. 좌측 JAVA 구역(객체)과 우측 구역(관계)을 연결해주고있다. 이처럼 연결/변환 과정을 자동으로 진행해주기 때문에 객체모델과 관계형 모델의 차이를 해소해준다.


아래 그림에서 객체 모델은 참조를 기반으로 객체간의 관계를 표현하고있지만, 관계형 모델은 2차원 테이블 형태로 되어있다.
변환과정이 필요하다. 변환과정을 대신하여 해주는 것이 ORM Framework이다.


객체 모델과 관계형 모델의 비교

JPA 장단점

데이터연동 프로젝트는 크게 DB위주객체 위주로 나눠볼 수 있다.

DB위주의 프로젝트의 경우 DB에서 직접 필요한 부분의 쿼리를 입력해서 선언 해 둔 클래스로 입력을 받는다. 이는 실무에서 복잡한 일처리나 성능 측면에서 이점을 얻을 수 있다. 하지만 아래와 같은 단점이 분명하다.

  • 모든 쿼리를 직접 입력해야한다.
  • 쿼리의 오타에 대해 치명적이다.
  • 변경 사항이 있을 때마다 쿼리를 재입력해야 한다.

대표적으로 Mybatis가있다.

객체위주의 프로젝트는 쿼리를 일일이 작성할 필요도 없이 JAVA객체를 생성하면

  • 자동으로 쿼리를 생성해준다.
  • 그렇기에 쿼리 오타 가능성이 낮아지고,
  • 변경사항에도 객체 변경으로 처리가 가능하다.

하지만 DB위주의 코드보다 복잡한 일처리나 성능은 조금 부족하다는 단점이있다.

0개의 댓글