2024-05-21 오늘의 TIL

이재성·2024년 5월 22일

JPA

Java Spring JPA(Java Persistence API)는 자바 표준 ORM(Object-Relational Mapping) 프레임워크입니다. Spring Data JPA는 JPA를 더욱 쉽게 사용하도록 도와주는 Spring의 하위 프로젝트로, 데이터베이스와의 상호작용을 단순화하고 표준화하는 데 초점을 맞추고 있습니다. 이를 통해 개발자는 SQL 쿼리를 직접 작성하지 않고도 데이터베이스 작업을 수행할 수 있다.

  • ORM : Object-Relational Mapping

Object : "객체"지향 언어 (자바, 파이썬)
Relational : "관계형" 데이터베이스 (H2, MySQL)
반복적이고 번거로운 애플리케이션 단에서의 SQL 작업을 줄여주기 위한 기술

  • JPA는 애플리케이션과 JDBC 사이에서 동작되고 있습니다.
  • JPA를 사용하면 DB 연결 과정을 직접 개발하지 않아도 자동으로 처리해줍니다.
  • 또한 객체를 통해 간접적으로 DB 데이터를 다룰 수 있기 때문에 매우 쉽게 DB 작업을 처리할 수 있습니다.

JPA 형태

엔티티(Entity)
엔티티는 데이터베이스 테이블에 매핑되는 클래스, JPA를 사용하면 자바 클래스를 데이터베이스 테이블로 매핑할 수 있다.

리포지토리(Repository)
리포지토리는 데이터베이스에 접근하는 메서드를 정의하는 인터페이스입니다. Spring Data JPA는 리포지토리 인터페이스를 자동으로 구현하여 제공해줌.

서비스(Service)
서비스는 비즈니스 로직을 처리하는 계층입니다. 리포지토리를 사용하여 데이터베이스 작업을 수행함.

컨트롤러(Controller)
컨트롤러는 HTTP 요청을 처리하고, 서비스 계층을 호출하여 결과를 반환한다.

JPA 장점

  • 간편한 설정
    Spring Boot와 함께 사용할 경우 JPA 설정이 매우 간단합니다.
  • 생산성 향상
    복잡한 쿼리를 작성하지 않고도 리포지토리 인터페이스를 통해 데이터베이스 작업을 수행할 수 있습니다.
  • 유지보수
    테이블 칼럼 변경 시 이전에는 SQL을 모두 확인 후 수정 필요
    JPA는 JPA가 대신 작업을 수행하므로 유지보수 측면에서 장점이 있음

JPA 단점

  • 성능
    메서드 호출로 쿼리를 실행하는 건 내부적인 동작이 많다는 의미
    직접 SQL을 호출하는 것보다 성능이 낮을 수 있음
  • 러닝커브
    JPA를 사용하기 위해서는 학습해야 할 것들이 많음
    JPA를 사용해도 SQL을 알아야 Hibernate가 수행한 쿼리 확인 및 성능 모니터링이 가능함
profile
하이요

0개의 댓글