Backend/Spring

Spring Data JPA 란?

야뤼송 2022. 2. 20. 01:06
반응형

1. JPA(Java Persistence API)

  • 자바 진영의 ORM 기술 표준으로, 인터페이스 모음이다.
  • 인터페이스이기에 구현체가 없고 사용하기 위해서는 ORM 프렘임워크를 선택해야 한다.
    (Hibernate, OpenJPA)
  • 자바 진영의 ORM 기술 표준으로, 인터페이스 모음
  • JPA는 어플리케이션과 JDBC 사이에서 동작하는데 JPA 내부에서 JDBC API를 이용하여 DB와 통신을 하게 된다.
  • JPA 특징
    • SQL 중심에서 객체 중심으로 개발하면서 패러다임의 불일치를 해결
    • 생상성 & 유지보수에 뛰어남
    • DBMS에 종속적이지 않음

2. Spring Data JPA

  • JPA를 더욱 편하게 사용하기 위해 만들어진 모듈이다.
    출처 : https://velog.io/@adam2/JPA%EB%8A%94-%EB%8F%84%EB%8D%B0%EC%B2%B4-%EB%AD%98%EA%B9%8C-orm-%EC%98%81%EC%86%8D%EC%84%B1-hibernate-spring-data-jpa
  • Spring Data JPA는 반복되는 CRUD 문제를 더욱 편리한 방법으로 해결할 수 있게 해준다.
    아래의 공통 인터페이스인 JpaRepository를 상속받은 인터페이스를 생성하면 CRUD를 편하게 사용할 수 있다
  • Spring Data JPA 인터페이스 및 기능
    • findAll() : 해당 엔티티 테이블에 있는 모든 데이터 조회
    • save() :  대상 엔티티들 DB에 저장
    • saveAll() : Iterable 가능한 객체 저장
    • delete() : 데이터베이스에서 대상 엔티티를 삭제
    • 이외에도 다양한 기능을 제공
      - 검색 조건으로 findBy 뒤에다가 검색할 조건값을 입력
      - 이외에도 distinct, orderby 등등을 다양한 기능에 대해 사용 가능
       출처 : https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.query-methods.details
  • Spring Data JPA 반환 타입
    • 다양한 반환 타입을 지원
    • 결과가 한건 이상이면 컬렉션 인터페이스를 사용하고, 단건이면 Optional 이나 T를 사용
      - T와 Optional : 결과가 2개이면 에러 발생
      - 컬렉션 : 결과가 없는 경우 빈 컬렉션 반환(Null 아님)
반응형