Description

일반적으로 Data Access Layer를 구현하기 위해서는 상당량의 코드를 작성해야 한다. Spring Data에서는 Repository를 추상화하여 다양한 저장소에 접근하기 위한 Data Access Layer 구현 코드를 최소화함으로써 개발생산성을 높일 수 있도록 한다. 이는 Query Method를 통해 가능한데 Query Method란 메소드명만 가지고 쿼리를 만들 수 있다는 것이다. 특정 규칙에 맞게 메소드를 작성하면 개발자가 따로 Data Access 클래스를 만들지 않아도 Spring Data가 대신하여 해당 Database와 자동으로 매핑허여 결과를 가져다준다.

Repository 인터페이스를 상속받아 CRUD 관련 메소드들을 제공하는 CrudRepository 인터페이스와 Paging 처리 기능이 제공되는 PagingAndSortingRepository 인터페이스를 살펴보도록 하겠다.

User Guide

CRUD 기능 제공 인터페이스

Spring Data 리파지토리 추상화의 핵심 인터페이스는 바로 Repository이다. Repository는 일종의 마커 인터페이스로 클래스 타입과 ID 타입을 이용해서 작성할 수 있으며 Repository 인터페이스의 하위 인터페이스로 CRUD 기능을 제공하는 CrudRepository가 있다.
다음은 CrudRepository 코드이다.

public interface CrudRepository<T, ID extends Serializable> extends Repository<T, ID> {
 
<S extends T> S save(S entity);........................❶
 
T findOne(ID primaryKey);..............................❷
 
Iterable<T> findAll();.................................❸
 
Long count();..........................................❹
 
void delete(T entity);.................................❺
 
boolean exists(ID primaryKey);.........................❻
 
}

❶ 전달받은 엔터티를 저장한다.
❷ 전달된 ID로 식별한 엔터티를 리턴한다.
❸ 모든 엔터티를 리턴한다.
❹ 엔터티의 갯수를 리턴한다.
❺ 전달받은 엔터티를 삭제한다.
❻ 전달된 ID에 해당하는 엔터티의 존재여부를 리턴한다.

Paging 기능 제공 인터페이스

Spring Data에서는 CrudRepository 이외에도 페이징 처리 기능을 제공하는 PagingAndSortingRespository라는 인터페이스를 제공하며 이 인터페이스는 CrudRepository를 상속받고 있다.

public interface PagingAndSortingRepository<T, ID extends Serializable> extends
CrudRepository<T, ID> {
Iterable<T> findAll(Sort sort);
Page<T> findAll(Pageable pageable);
}

PagingAndSortingRepository 인터페이스를 사용하여 2번째 페이지에서 20건의 데이터를 가져오는 예제이다.

PagingAndSortingRepository<User, Long> repository = 
 
Page<User> users = repository.findAll(new PageRequest(1, 20));

참고자료

 
egovframework/rte2/psl/data/jpa/repository.txt · 마지막 수정: 2015/04/14 11:24 (외부 편집기)
 
이 위키의 내용은 다음의 라이센스에 따릅니다 :CC Attribution-Noncommercial-Share Alike 3.0 Unported
전자정부 표준프레임워크 라이센스(바로가기)

전자정부 표준프레임워크 활용의 안정성 보장을 위해 위험성을 지속적으로 모니터링하고 있으나, 오픈소스의 특성상 문제가 발생할 수 있습니다.
전자정부 표준프레임워크는 Apache 2.0 라이선스를 따르고 있는 오픈소스 프로그램입니다. Apache 2.0 라이선스에 따라 표준프레임워크를 활용하여 발생된 업무중단, 컴퓨터 고장 또는 오동작으로 인한 손해 등에 대해서 책임이 없습니다.
Recent changes RSS feed CC Attribution-Noncommercial-Share Alike 3.0 Unported Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki