ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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는 아니다.
kimjihoon