[Beyond SW] Spring Data JPA

이경민·5일 전

한화시스템 Beyond SW

목록 보기
36/40

스프링 데이터 JPA란?

  • Spring 프레임워크에서 JPA를 편리하게 사용할 수 있도록 제공하는 Spring Data 모듈 중 하나이다.
  • JPA를 추상화시킨 Repository라는 인터페이스를 사용하고 쿼리메소드(Query Method)를 호출하는 것만으로 손쉽게 SQL문을 생성할 수 있다.

스프링 데이터 JPA의 특징

  • Spring 및 JPA기반의 Repository 구축을 위해 인터페이스와 쿼리메소드를 제공한다.
  • Querydsl 쿼리 지원 및 이에 따른 안전한 JPA 쿼리를 처리해 준다.
  • pagination을 지원한다.
  • Spring Data Jpa를 사용하면 JPA에서 사용했던 기존의 EntityManagerFactory, EntityManager, EntityTransaction같은 객체가 필요 없다.

Repository 인터페이스

  • Repository 인터페이스 상속 구조

인터페이스
CrudRepository : CRUD 기능 제공
PagingAndSortingRepository : 검색, 검색 결과 페이징 처리
JpaRepository : 영속성 컨텍스트 플러시, 배치에서 레코드 삭제

(인터페이스 내의) 메소드
long count() 모든 엔티티의 개수 리턴
void delete(ID) 식별키를 통한 삭제
void delete(Iterable) 주어진 모든 엔티티 삭제 *Iterable:반복가능한 객체
boolean exist(ID) 식별키를 가진 엔티티가 존재하는지 확인
findAllById(ID) 모든 엔티티 목록 리턴
Iterable findAll(Iterable) 해당 식별키를 가진 엔티티 목록 리턴
Optional findById(ID) 해당 식별키에 해당하는 단일 엔티티 리턴
saveAll 여러 엔티티들을 한번에 등록, 수정

쿼리 메소드

  • JPQL을 메소드로 대신 처리할 수 있도록 제공하는 기능이다.
  • 메소드의 이름으로 필요한 쿼리를 만들어주는 기능

    find + 엔티티 이름 + By + 변수 이름
    ex) findMenuByCode(): Menu 엔티티에서 Code 속성에 대해 조건처리하여 조회한다.

  • 엔티티 이름을 생략하고 쓸 수도 있는데 이는 해당 Repository 인터페이스의 제네릭에 해당하는 엔티티를 자동으로 인식하기 때문이다.
    ex) Repository 인터페이스가 JpaRepository<Menu, Integer>를 상속받고 있다면,
    findByCode(): Menu 엔티티에서 Code 속성에 대해 조건처리하여 조회한다.

0개의 댓글