본문 바로가기

Spring/JPA

JPA 소개, 특징, 장점 및 단점

JPA의 정의

JPA의 구조

  • JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준이다.
  • 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다.
  • ORM이기 때문에 자바 클래스와 DB 테이블을 매핑한다.

ORM이란

Object Reloational Mapping, 객체-관계 매핑이다.

  • 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것을 말한다.
  • Persistant API라고도 할 수 있다. 

JPA의 특징

  • JPA는 특정 기능을 하는 라이브러리가 아니고, 그저 인터페이스일 뿐이다.
  • Hibernate는 JPA라는 명세의 구현체이고, JPA를 직접 구현한 라이브러리 이다. JPA와 Hibernate는 마치 자바의 interface와 해당 interface를 구현한 class와 같은 관계이다.
  • String Data JPA는 JPA를 쓰기 편하게 만들어 놓은 모듈이다. 이 모듈 덕분에 EntityManagerw를 직접 다루지 않고도 Repository를 사용해서 DB에 접근할 수 있다. Repository의 기본 구현체인 SimpleJpaRepository 코드를 보면 내부적으로 EntityManager를 사용하고 있는 것을 알 수 있다.

JPA의 장,단점

장점

  • SQL문이 아닌 메서드를 통해 DB 조작이 가능하기 때문에, 개발자는 객체를 사용해 비즈니스 로직을 구성하는데만 집중이 가능해진다.
  • 쿼리와 같이 필요한 선어문, 할등등의 부수적인 코드가 줄어들어 각종 객체에 대한 코드를 별도로 작성하여 코드의 가독성을 높일 수 있다.
  • 객체적인 코드 작성이 가능해진다.
  • 유지보수 및 리팩토링에 유리하다.

단점

  • 프로젝트의 규모가 크고 복잡하여 설계가 잘못된 경우에는 속도 저하 및 일관성을 무너뜨리는 문제점이 발생할 수 있다.
  • 복잡하고 무거운 쿼리문은 속도를 위해 별도의 튜닝이 필요하기 때문에 결국 SQL 문을 쓰는게 나은 상황이 발생할 수도 있다.
  • 러닝 커브가 높다.

 

 

참고링크

JPA란 무엇인가, 그리고 장단점은 뭐가 있을까?

JPA는 도대체 뭘까? (orm, 영속성, hibernate, spring-data-jpa)

JPA, Hibernate, 그리고 Spring Data JPA의 차이점

'Spring > JPA' 카테고리의 다른 글

JPA Repository 메서드  (0) 2022.07.29
좋은 Entity 설계하는 방법들  (0) 2022.07.25