Data Access

Find Process (Controller - Service - Repository)

public abstract class EntityHandler<T,Q> {
 
        public String findForm(EntityPageable pageable, Model m, Q query, BindingResult e){...}
        .
        .       
}

public interface EntityService<T, Q>{
        
        public Iterable<T> findForm(Q query, EntityPageable pageable);
        .
        .
}

public interface EntityRepository<T, ID extends Serializable> {
        public List<T> findAll(Object query);
        public Page<T> findAll(Object query, Pageable pageable);
        .
        .
}

1. 클라이언트에서 검색 조건 및 페이지 정보 파라미터와 함께 Controller Layer 를 호출한다.

2. Controller Layer 의 findForm() 에서 Service Layer 의 findForm() 를 호출한다.

3. Service Layer 의 findForm() 에서 EntityPageable 의 isEnable() 을 판단하여, Repository Layer 의 적절한 findAll() 를 호출하여 EntityPage 또는 List 를 생성한다.

4. Controller findForm() 에서 Service 로 부터 리턴 받은 EntityPage 또는 List 를 "model_query_result" 라는 이름으로 Model 에 담는다.

5. View Layer 에서 이를 클라이언트에 출력한다.

EntityPageable

Springfield 는 검색 결과 데이터행의 Paging 과 Ordering 처리를 위해 com.u2ware.springfield.domain.EntityPageable 을 사용한다. 기본 등록 되는 EntityPageableArgumentResolver 가 "model_query_pageable" 라는 Prefix 를 가진 HTTP Parameter 를 수집하여 EntityPageable 를 생성한다. 다음표는 파라미터의 이름과 이에 매치되는 EntityPageable 의 속성들이다.

HTTP Request Parameter NameDescription
model_query_pageable.enablePaging 처리 여부 , default value is true
model_query_pageable.pageNumberpageNumber , default value is 0
model_query_pageable.pageSizepageSize , default value is 10
model_query_pageable.sortOrder[].propertyorder property name
model_query_pageable.sortOrder[].directionorder direction value

EntityPage

Springfield 는 검색 결과 객체로 List 또는 com.u2ware.springfield.domain.EntityPage 을 사용한다. EntityPage 는 결과 데이터행과 각종 Paging 결과 정보들을 담고 있다. 다음표는 EntityPage 의 속성들이며, View 단에서 EL 로 접근가능하다.

ELDescription
model_query_result.contentContent List
model_query_result.pageNumberpageNumber
model_query_result.pageSizepageSize
model_query_result.totalElementstotal row Count
model_query_result.totalPagestotal Pages Count
model_query_result.previousPageprevious page number of indexing
model_query_result.beginPagebegin page number of indexing
model_query_result.endPageend page number of indexing
model_query_result.nextPagenext page number of indexing