JPA (Java Persistence API) - JPA에 대해서 알아보자

JPA ( Java Persistence API )


개념

  • 자바 진영에서 ORM ( Object - Relational Mapping ) 기술 표준으로 사용되는 인터페이스 모음
  • 구현된 클래스와 매핑 해주기 위해 사용되는 프레임워크
  • JPA를 구현한 대표적인 오픈소스는 Hibernate

ORM ( Object - Relational Mapping )

  • 객체와 관계형 데이터베이스의 데이터를 자동으로 Mapping 해주는것을 의미
  • 객체지향 - 클래스 // 관계형 데이터베이스 - 테이블

JPA 동작

  • Application 과 JDBC 사이에서 동작
  • JPA를 사용하면 JPA 내부에서 JDBC API를 사용하여 SQL을 호출해서 DB와 통신

Why JPA Use ?

  • SQL 중심적인 개발에서 객체지향적인 개발이 가능
  • 생산성이 증가
  • 유지보수 쉬움
  • Object와 RDB간의 패러다임 불일치 해결


JPA 구동방식

  • DB에 접근할 때 매번 커넥션을 생성해주는 EntityManagerFactory를 생성, 이는 각 DB당 하나만 생성해서 Application 전체에서 공유해야 함.

JPA 장단점

  • 장점
    • SQL 문이 아닌 메서드를 통해서 DB 조작이 가능하기 때문에, 개발자는 객체모델을 이용하여 비즈니스 로직을 구성하는데만 집중이 가능해진다.
    • Query와 같이 필요한 선언문 / 할등등의 부수적인 코드가 줄어들어 각종 객체에 대한 코드를 별도로 작성하여 코드의 가독성을 높일 수 있다.
    • 객체지향적인 코드 작성이 가능
    • 유지보수 및 리팩토링에 유리하다.
  • 단점
    • 프로젝트의 규모가 크고 복잡하여 설계가 잘못된 경우에는 속도 저하 및 일관성을 무너뜨리는 문제점이 발생할 수도 있다.
    • 복잡하고 무거운 Query문은 속도를 위해 별도의 튜닝이 필요하기 때문에 결국 SQL 문을 사용하는게 더 나은 상황이 발생할 수도 있다.
    • 학습비용이 비싸고 시간이 오래걸린다.

'BE > Java' 카테고리의 다른 글

JPA Proxy 에 대해서 알아보자  (0) 2023.07.26
JPQL ( Java Persistence Query Language ) - JPQL에 대해서 알아보자  (0) 2023.07.23
DipsatcherServlet이란?  (0) 2023.07.21
REST API에 대해서 알아보자  (0) 2023.06.11
Spring의 특징  (2) 2023.06.11