Study/기술 및 용어 정리

[Spring JPA] JPA의 개념과 장단점

토기발 2023. 6. 15. 17:19

책을 보며 진행했던 프로젝트에서 JPA를 사용했고, 스프링 부트 강의에서도JPA를 사용했지만 정확한 정의와 어떤 점이 좋은지 확실하게는 알고 사용한 것이 아니었어서 이번 기회에 공부하면서 정리했다.

 

 

 

JPA

JPA는 Java Persistence API 의 약자이며, 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음이다. (= 라이브러리가 아님 = 실제로 동작하는 것이 아님. JPA 인터페이스를 구현한 대표적인 오픈소스가 Hibernate라고 할 수 있다.)


 

ORM

Object Relational Mapping, 객체-관계 매핑의 줄임말이다.

OOP의 클래스와 RDB(Relational DataBase)의 테이블을 자동으로 매핑(연결)한다는 뜻이다.

 

ORM의 장점 

  • ORM을 사용하면 자바 문법만으로도 데이터베이스를 다룰 수 있다. 즉, ORM을 이용하면 개발자가 쿼리를 직접 작성하지 않아도 데이터베이스의 데이터를 처리할 수 있다.
  • 데이터베이스 종류에 상관 없이 일관된 코드를 유지할 수 있어서 프로그램을 유지·보수하기가 편리하다. 또한 내부에서 안전한 SQL 쿼리를 자동으로 생성해 주므로 개발자가 달라도 통일된 쿼리를 작성할 수 있고 오류 발생률도 줄일 수 있다.

 


JPA(정확히는 JPA의 구현체(ex: Hibernate)) 는 애플리케이션과 JDBC사이에서 동작한다.

개발자가 JPA 사용시, JPA 내부에서 JDBC API를 사용하여 SQL을 호출하고 DB와 통신한다.

 

 

 

JPA의 장점

  • SQL중심 개발이 아닌 객체 중심 개발을 할 수 있다. 오직 객체지향적 접근만 고려하면 되기때문에 생산성이 증가한다.
  • SQL문이 아닌 Method를 통해 DB를 조작할 수 있어, 개발자는 객체 모델을 이용하여 비즈니스 로직을 구성하는데만 집중할 수 있다.
  • 간단한 CRUD
    저장: jpa.persist(member)
    조회: Member member = jpa.find(memberId)
    수정: member.setName("변경할 이름")
    삭제: jpa.remove(member)
  • 유지보수가 간편하다. 기존에는  필드 변경 시 모든 SQL을 수정해야 한다.
    JPA의 경우 필드만 추가하면 된다. SQL은 JPA가 처리하기 때문에 손댈 것이 없다.
  • 다양한 성능 최적화 기회를 제공하며, 객체 재사용이 가능하여 같은 것을 조회할 때 여러 번 select문을 사용할 필요가 없다.
  • 데이터베이스 기술에 종속되지 않도록 한다. 데이터베이스를 변경하면 JPA에게 다른 데이터베이스를 사용한다고 알려주기만 하면 된다.

JPA의 단점

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

 

 

참고 출처

https://wikidocs.net/161164

https://azderica.github.io/00-java-jpa/

https://gmlwjd9405.github.io/2019/08/04/what-is-jpa.html

'Study > 기술 및 용어 정리' 카테고리의 다른 글

클라우드란?  (0) 2023.06.16
Ngnix 개념 및 Apache 와 비교  (0) 2023.06.16
Docker란?  (0) 2022.07.25
Spring과 Spring Boot의 개념과 차이  (0) 2022.07.22
용어정리 - JSP / 서블릿  (0) 2022.07.21