JPA이란?

P.W.J·2023년 5월 2일
0

BackEnd

목록 보기
2/5

ORM이란?

  • JPA는 ORM 기술입니다.
  • ORM(Object Relational Mapping)이란, 객체(Object)와 데이터베이스의 데이터를 연결해주는(매핑) 기술이다.
  • 장점
    • SQL문이 아닌 Method를 통해 DB를 조작할 수 있어, 개발자는 객체 모델을 이용하여 비지니스 로직을 구성하는데만 집중 할 수 있다.
    • 객체 지향인 코드 작성이 가능하다
    • 재사용, 유지보수, 리팩토링의 용이성 : ORM을 통해 작성한 객체를 재활용할 수 있다는 측면에서 재사용 및 유지보수의 편리성이 증가함
  • 단점
    • 프로젝트의 규모가 크고 복잡하여 설계가 잘못된 경우, 속도 저하 및 일관성을 무너뜨리는 문제점이 생길 수 있음
    • 복잡하고 무거운 Query는 속도를 위해 별도의 튜닝이 필요하기 때문에 결국 SQL문을 써야할 수도 있음

JPA이란?

  • JPA는 Java Persistence API의 줄임말이며 JPA는 자바 진영에서 ORM((Object-Relational Mapping))기술 표준으로 사용되는 인터페이스의 모음입니다.
    • Java 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용하는 인터페이스 모음
    • 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스
    • 인터페이스 이기 때문에 Hibernate, OpenJPA 등이 JPA를 구현함

JPA를 사용하는 이유

  1. JPA는 반복적인 CRUD SQL을 처리해준다.
  2. JPA는 매핑된 관계를 이해서 SQL을 생성하고 실행하는데, 개발자는 어떤 SQL이 실행될지 생만하면 되기 때문이며 예측도 쉽게 가능하다.
  3. SQL이아닌 객체 중심으로 개발할 수 있다.
  4. 생산성이 좋아지고 유지보수도 쉬워진다.

Hibernate란?

  • Hibernate는 JPA를 구현한 구현체입니다.
  • 개발된지 10년이 넘었으며 대중적으로 많이 이용되는 JPA 구현체 중 하나입니다.
  • JPA의 핵심들인 EntityManagerFactory, EntityManager, EntityTransaction 등을 상속받아 구현한다.
  • JPA를 구현하는 다른 구현체들로는 EclipseLink나 DataNucleus 등이 있다.
  • 만약 JPA를 구현하는 구현체들이 마음에 들지 않는다면 개발자가 직접 JPA 구현체를 만들어 사용할 수도 있다.
  • Hibernate는 내부적으로 JDBC를 이용해 관계형 데이터베이스와 커넥션을 맺고 상호작용한다.

Spring Data JPA

  • JPA를 사용하기 편하도록 만들어놓은 모듈이다.
  • Spring Data JPA를 사용하면 사용자는 더욱 간단하게 데이터 접근이 가능해진다.
  • Spring Data JPA는 JPA를 한 단계 더 추상화시킨 Repository 인터페이스를 제공한다.
  • 이러한 Spring Data JPA는 Hibernate와 같은 JPA구현체를 사용해서 JPA를 사용하게 된다.

요약

  • JPA는 자바 진영의 ORM 기술에 대한 API 표준 명세이며 Hibernate는 JPA의 구현체이고, 내부적으로 JDBC를 이용한다.
  • Spring Data JPA는 JPA를 사용하기 쉽게 스프링에서 제공하는 모듈로 내부적으로 JPA 구현체를 이용한다.

0개의 댓글