[JPA] JPA & ORM

한호성·2022년 10월 12일
0

JPA

목록 보기
1/2

글의 목적

1.JPA의 정의 와 ORM 에 대해 설명하는 글입니다.
2.JPA 사용했을시, 장단점에 대해 설명하는 글입니다.

JPA (Java Persistence API)

JPA란 자바 진영에서 사용하는 ORM 기술 표준 명세입니다. 즉 JPA는 인터페이스이고, 이것을 구현한 구현체는 대표적으로 Hibernate가 있습니다.
(이외의 구현체 : EclipseLink, DateNucleus)


ORM이란(Object Relational Mapping)의 약자로 관계형 DB Table과 어플리케이션 Class를 Mapping 해주는 것을 의미하며, 어플리케이션 객체를 RDB 테이블에 영속화 하는것을 의미한다

JPA & ORM이 나오게 된 이유?

  • 자바의 객체 지향 프로그래밍에는, 추상화, 상속, 다형성의 특징을 갖고 있고, RDB 는 데이터 정규화를 통한 데이터 저장이라는 특징을 갖고 있다. 이 둘의 특성이 다름으로 인해 나타나는 문제를 해결하기 위해 JPA가 나타났다.

어떤 차이가 있었을까?

  • 상속 : 객체랑 다르게 테이블에는 상속이라는 기능이 없어서, 개발자가 여러 설정/쿼리를 생성했어야함 -> JPA에서는 여러 쿼리를 한번에 실행해서 해결해준다.

  • 연관관계: 객체는 참조를 사용해서 연관된 객체를 조회하지만, 테이블은 왜리키로 연관관계를 설정하고 조인으로 연관 테이블을 조회한다.
    ->JPA에서는 연관관계에 대해 정의해서, 각 설정마다 다르게 데이터를 조회해온다.

  • 비교: DB는 PK로 각 로우르르 구분하는 반면, 객체는 동일성/동등성을 비교를 한다.
    JPA는 DB의 같은 로우를 조회할 경우, 1차 캐시로 동일성 비교를 보장한다.

JPA의 장단점

장점

  • 객체지향적 프로그래밍

    • 관계형 DB테이블에 매핑하는 정보가 CLASS로 명시 되었기 때문에 유지보수 및 리팩토링에 유리
    • 객체지향적인 코드 작성이 가능하다.
    • SQL문이 아닌 Method를 통해 DB조작 가능, 객체 모델을 이용하여 비지니스 로직을 구성하는데에만 집중할 수 있다.

  • Hibernate 구현체를 사용할 경우, 특정 데이터 베이스에 종속되지 않음, JPA는 추상화한 데이터 접근 계층을 제공하기 때문에, 설정파일에 어떤 데이터베이스를 사용하는지 알려주면 쉽게 변경하 수 있다. (Hiberante.dialect.DB명) -> 이런 특성 때문에 특정 DB에 종속된 함수들은 제공하지 않는다.

단점

  • 복잡한 Query를 사용할 때 필연적으로 SQL문을 사용하게 된다. -> 주로 JPQL을 사용하게 하는데, 이는 Complie 단계에서 오류를 찾을 수없는 단점이 존재한다. (QueryDSL)을 사용하기도함
  • 객체 간의 매핑 설계를 잘못했을 경우 성능저하가 존재하며, 개발자가 의도하지 않은 쿼리문도 존재하여 성능 저하의 우려가 있다 -> 즉 공부를 많이하고 써야한다 .Resoucre 소모가 있다.

Referecne

https://velog.io/@sooyoungh/JPA를-쓰는-이유와-JPA-소개
https://velog.io/@dev_zzame/JPA란-무엇인가-그리고-장단점은-뭐가-있을까

https://dbjh.tistory.com/77

profile
개발자 지망생입니다.

0개의 댓글