TIL

+19 JPA란 무엇일까?

JAVABOZA 2023. 7. 3. 18:52

JPA(Java Persitance API)

"자바에서 데이터를 영구히 기록할 수 있는(DBMS에) 환경을 제공하는 API"

 

API란 "인터페이스(어떤 약속)을 토대로 요청에 대한 응답을 제공해주는 프로그램"정도로 이해할 수 있다.
JAVA 
Persistence
Application Programming Interface 

 

JPA는 자바 프로그램을할 때 영구적으로 데이터를 저장하기위해 필요한 인테페이스를 제공해주는 것

 

 

 

ORM이란? // <객체와 DB의 관계 맵핑 도구>

ORM의 등장 배경 : 반복적이고 번거로운 애플리케이션단에서의 SQL 작업을 줄여주기 위해서 등장

*의미

객체와 관계형 데이터베이스를 맵핑해주는 기술
객체는 객체대로,
관계형 데이터베이스는 관계형 데이터베이스대로 설계
ORM 프레임워크는 그 중간에서 맵핑!

 

장점

  • SQL문이 아닌 Method를 통해 DB를 조작할 수 있어, 개발자는 객체 모델을 이용하여 비즈니스 로직을 구성하는데만 집중할 수 있음.
    (내부적으로는 쿼리를 생성하여 DB를 조작함. 하지만 개발자가 이를 신경 쓰지 않아도됨)
  • Query와 같이 필요한 선언문, 할당 등의 부수적인 코드가 줄어들어, 각종 객체에 대한 코드를 별도로 작성하여 코드의 가독성을 높임
  • 객체지향적인 코드 작성이 가능하다. 오직 객체지향적 접근만 고려하면 되기때문에 생산성 증가
  • 매핑하는 정보가 Class로 명시 되었기 때문에 ERD를 보는 의존도를 낮출 수 있고 유지보수 및 리팩토링에 유리
  • 예를들어 기존 방식에서 MySQL 데이터베이스를 사용하다가 PostgreSQL로 변환한다고 가정해보면, 새로 쿼리를 짜야하는 경우가 생김. 이런 경우에 ORM을 사용한다면 쿼리를 수정할 필요가 없음

단점

  • 프로젝트의 규모가 크고 복잡하여 설계가 잘못된 경우, 속도 저하 및 일관성을 무너뜨리는 문제점이 생길 수 있음
  • 복잡하고 무거운 Query는 속도를 위해 별도의 튜닝이 필요하기 때문에 결국 SQL문을 써야할 수도 있음

 

착각하지말자

 

JPA는 라이브러리가 아닌 ORM을 사용하기 위한 인터페이스의 모음!

쉽게 정리하면 자바 애플리케이션에서 관계형데이터베이스를 어떻게 사용할지 정의하는 하나의 방법 일 뿐

 

인터페이스니 당연히 JPA의 구현체(Hivernate)가 있어야 JPA를 사용 할 수 있다


Hivernate란?
:: JPA 구현한 구현체

:: 자바언어를 객체 관계 맵핑 프레임워크로, 객체 지향 도메인 모델을 관계형 데이터베이스로 맵핑하기 위한 프레임워크 제공

 

 

1. JPA 핵심들인 EntityManagerFactory, EntityManager, EntityTransaction 등을 상속받아 구현

2 . 내부적으로는 JDBC를 이용해 관계형 데이터베이스와 커넥션을 맺고 상호작용함

 

정리하면 JPA는 DB와 자바객체를 맵핑하기 위한 인터페이스(API) 제공하고 JPA 구현체인 하이버네이트는 이 인터페이스를 구현한 것이다.

 

하이버네이트 외에도 EclipseLink, DataNucleus, OpenJPA, TopLink Essentials 등이 있다.