JPA란

한민기·2024년 8월 10일

JPA

목록 보기
2/7

JPA 소개

자바 ORM 기술에 대한 API 표준 명세로 사용되는 인터페이스의 모음이다.

ORM (Object-Relational Mapping)

ORM 프레임워크가 중간에서 객체와 관계형 데이터베이스를 매핑한다.
ORM를 이용하면 DBMS 벤더마다 다른 SQL에 대한 종속성을 줄이고 호환성 향상이 가능하다.

JPA를 사용하는 이유

  • SQL 직접 수정하면 하나하나 다 수정해야 한다.
  • 텍스트 수정이라 오타가 발생해도 런타임시 확인이 가능하다.
  • 관계형 데이터베이스 ≠ 객체 지향 프로그래밍 언어
  • DB와 Java 사이의 차이를 메꾸기 위해 개발자는 많은 시간을 들여 수많은 코드와 쿼리를 작성해야한다.

그래서 왜 사용?

  • SQL 중심적인 개발 -> 객체 중심의 개발
  • 생상성 때문
    • JPA를 사용하면 CURD용 SQL을 개발자가 직접 작성하지 않아도 된다.
    • interface 선언만으로도 쿼리 구현이 가능하기 때문에 가볍게 사용할 수 있는 CRUD 쿼리를 대처 할 수 있다.
  • maintenance
    • 컬럼 추가/삭제 시 직접 관련된 CRUD 쿼리를 모두 수정하는 대신 JPA가 관리하는 모델을 수정하면 된다.

Spring Data JPA의 특징

1. 리포지터리 추상화

  • 리포지터리 계층의 추상화를 제공한다.
  • 개발자가 인터페이스만 생성해주면 Spring Data JPA에서 구현체를 자동으로 생성해준다.

2. 쿼리 메서드

  • 메서드의 이름을 분석하여 SQL 쿼리를 자동으로 생성하는 기능
  • ex) findByName, finByEmailContaining

3. @Query 어노테이션

  • 복잡한 쿼리 또는 JPA가 제공하는 기본 쿼리 메소드로 표현하기 어려운 쿼리 작성시

4. 트랜잭션 관리

  • @Transactional 어노테이션을 사용하여 클래스 레벨에서 트팬잭션의 경계를 선언할 수 있다.

5. EntityGraph

  • 엔티티 그래프 기능을 사용하여 JPA 쿼리 실행시 페치 조인의 포잡성을 관리할 수 있다.
  • Enager 또는 Lazy 로딩을 세밀하게 제어 할 수 있다.

6. Auditing

  • 엔티티의 생성 시간, 수정 시간, 생성자 및 수정자 등을 자동으로 관리할 수있는 Auditing 기능을 제공한다.

정리

JPA는 SQL 중심의 개발에서 객체 중심의 개발을 위해 사용한다.
개발자가 해야하는 SQL문 작업을 어느정도 도와준다.
JPA의 추상화 리포지터리가 잘 구성되어있으며 확장성도 좋다.
트랙잭션을 따로 만들지 않다도 어노테이션만으로 적용 가능하다.

profile
백엔드 개발자

0개의 댓글