-
[Spring] Spring Data JPA(Java Persistence API)란?Spring 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는 아니다.
'Spring' 카테고리의 다른 글
[Spring] SpringFramework, SpringBoot의 개념 및 차이점 (0) 2024.05.16 [Spring] Lombok 개념 및 사용법 (1) 2024.04.22 [Spring] Controller, Service, Repository 가 무엇일까? (0) 2024.04.20 [Spring] JdbcTemplate의 기본 (0) 2024.04.19 [Spring] DAO, DTO, VO, Entity 개념 및 차이점 (0) 2024.04.19