Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

지훈의 CC일지

[Spring] Spring Data JPA(Java Persistence API)란? 본문

Spring

[Spring] Spring Data JPA(Java Persistence API)란?

kimjihoon 2024. 4. 21. 19:34

JPA 전에 ORM(Object-Relational Mapping)란?

  • ORM은 객체와 관계형 데이터베이스를 매핑해준다.
  • ORM이란 프레임워크가 중간에서 매핑해준다

JPA(Java Persistence API)

  • Java 진영에서 ORM 기술 표준으로 사용하는 인터페이스 모음
  • 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스
  • 인터페이스이기 때문에 Hibernate, OpenJPA등이 JPA를 구현함
    ->Hibernate란?
          Hibernate는 JPA를 구현한 구현체
          내부적으로 JDBC를 사용해 관계형 데이터베이스와 커넥션을 맺는다.

 

 

왜JPA를 사용해야 할까?

  • 반복적인 CRUD SQL을 처리하기위해.
  • 매핑된 관계를 이용해 SQL을 생성하고 실행하는데 그러면 샐행과 예측이 쉬워진다
  • SQL아닌 객체 중심으로 개발할 수 있다, 그러면 생산성이 좋아지고 유지보수도 수월해진다
  • 패러다임의 불일치도 해결하였다.

 

Spring Data JPA란?

  • JPA를 한단계 더 추상화 시킨 인터페이스(repository)이다.
  • CRUD 처리를 위한 인터페이스 제공
  • 개발시 인터페이스만 작성하면 실행 시 나머지 과정은 JPA가 알아서 해줌.
  • 제공하는 인터페이스인 Repository를 생성한 후 정해준 규칙대로 메서드를 정의하여 사용하면, 알아서 해당 메서드의 이름을 보고 쿼리를 날리는 구현체를 만들어 Bean에 등록한다.

주요기능

    1. Repository 인터페이스

 

    데이터 액세스 작업을 위한 메서드를 정의하는 인터페이스를 만들 수 있다. Spring Data JPA가 이것을 자동으로 구현해서 기본적인 데      이터 조작을 처리한다.

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends JpaRepository<User , Long> {
}

 

    2. 쿼리 메서드

 

    메서드 이름만으로 데이터를 조회하거나 조작할 수 있다

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByLastName(String lastName);
    List<User> findByAgeGreaterThan(int age);
}

 

    3. 쿼리 생성

 

    복잡한 쿼리라도 "@Query"라는 어노테이션을 이용하여 직접 작성 할 수 있다.

 

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    @Query("SELECT u FROM User u WHERE u.age >= :minAge")
    List<User> findUsersWithMinAge(@Param("minAge") int minAge);
}

 

설치방법

  • JPA를 사용하면 Spring Data JPA 라이브러리는 이미 설치되어 있다.
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

 

-저장-

 

-조회-


스프링에서 흔히 사용하는 JPA 는, JPA를 이용한 Spring Data JPA 프레임워크이지 JPA는 아니다.


Summary

  • JPA을 기반으로 만들어진 라이브러리이다.
  • 데이터 액세스 작업을 단순화하고 개발 생산성을 향상시키기 위해 Spring Data JPA를 사용한다.
  • Spring Data JPA는 프레임워크이지 JPA는 아니다.