Spring/Data JPA
[Data JPA] 순수 JPA 페이징과 정렬
김긍수
2021. 4. 23. 05:21
스프링 데이터 JPA는 다양한 유형의 반환 타입을 지원한다.
List<Member> findListByUsername(String username); //컬렉션
Member findMemberByUsername(String username); //단건
Optional<Member> findOptinalByUsername(String username); //단건 Optional
페이징 조건
- 검색 조건 : 나이 10살
- 정렬 조건 : 이름 내림차순
- 페이징 조건 : 첫번째페이지, 페이지 당 데이터 3건
순수 JPA에서 페이징을 하는 방법
//순수 JPA 페이징
public List<Member> findByPage(int age,int offset, int limit) {
return em.createQuery("select m from Member m where m.age = :age order by m.username desc")
.setParameter("age", age)
.setFirstResult(offset) //어디서부터 데이터를 가져오는지
.setMaxResults(limit) //개수
.getResultList();
}
public long totalCount(int age) {
return em.createQuery("select count(m) from Member m where m.age = :age", Long.class)
.setParameter("age", age)
.getSingleResult();
}
page가 1일때는 -> offset=0, limit=10
page가 2일때는 -> offset=10, limit=10 이런 식으로 계산이 된다.
페이징할때 전체 개수를 알아야하므로 totalCount를 반환하는 메서드까지 작성해야한다.
스프링 데이터 JPA에서 페이징을 하는 방법