site_link1 | http://blog.naver.com/zeon77?Redirect=Lo...0027898151 |
---|---|
site_link2 | |
site_link3 |
[ 타입1 ]
Query 인터페이스는 페이징 처리를 위한 메소드를 제공하고 있는데, 이 두 메소드는 아래와 같이 사용한다.
Query query = session.createQuery("from Member member order by member.name asc"); query.setFirstResult(30); query.setMaxResults(15);
Query.setFirstResult() 메소드는 Query의 결과 목록 중에서 읽어올 첫번째 항목의 인덱스값을 입력한다. 이때 인덱스 값은 0부터 시작한다. 따라서, 위 코드는 31번째 항목부터 읽어오게 된다.
setMaxResults() 메소드는 읽어올 최대 개수를 나타낸다. 따라서, 위 코드는 Query 결과의 31번째 항목부터 최대 15개를 읽어오게 된다. 이 두 메소드를 사용하면 페이징 처리를 쉽게 할 수 있을 것이다.
다음과 같은 메서드를 기본적은 구현하여 사용할 수 있습니다.
- /**
- * page : 처리를 페이지
- * range : 화면 당 보여줄 리스트의 갯수
- */
- protected List getPagedList(String queryName, int page, int range) throws Exception {
- Session session = SessionManager.currentSession();
- /** queryName : 매핑되어 있는 퀴리의 이름명 */
- Query query = session.getNamedQuery(queryName);
- /** (page-1) * range : 설정된 값+1 부터 처리를 시작됨에 유의하자. */
- query.setFirstResult((page-1) * range);
- /** range : 처리하여 가져올 항목의 갯수를 설정하는 부분 */
- query.setMaxResults(range);
- return query.list();
- }
[ 타입2 ]
보통 SQL을 처리할 때 데이터가 많아질 경우 요구사항이 발생하는 것은 당연합니다.
Hibernate에서도 이와 같은 고민을 해결하기 위해서 다음과 같은 방법을 제시하고 있습니다.
- Query q = s.createFilter( collection, "" ); // the trivial filter
- q.setMaxResults(PAGE_SIZE);
- q.setFirstResult(PAGE_SIZE * pageNumber);
- List page = q.list();
즉, 먼저 쿼리를 실행한 다음 해당 해당 Collection 데이터를 Filter를 통해서 필요한 데이터만큼만 가져오도록 처리할 수 있다고 Hibernate 문서에서 제시하고 있네요.
지금 이 방법이 정말 쿼리를 실행할 때 특정 부분만 가져오는 것인지 아니면 님이 말한것처럼 모든 데이터를 가져온 다음 특정부분만 가져오도록 구현되고 있는지는 확인해봐야 될거 같습니다.
Hibernate를 사용하면서 발생하는 문제점 해결을 위한 유용한 Tip을 모아 놓은 http://www.hibernate.org/118.html 보시면 도움 많이 되실거 같습니다.
HQL로 가능한 방법은 더 찾아봐야 될거 같습니다.
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
10 | SiteMesh를 이용하여 웹 페이지의 레이아웃을 처리 | 황제낙엽 | 2007.08.13 | 127 |
9 | Cactus를이용한효율적인테스트전략 | 황제낙엽 | 2007.01.30 | 103 |
8 | Xdoclet 사용하기 2부 | 황제낙엽 | 2006.10.04 | 102 |
7 | Xdoclet 사용하기 1부 | 황제낙엽 | 2006.10.04 | 118 |
6 | Jakarta Lucene (루씬) - 들어가기 | 황제낙엽 | 2007.07.30 | 120 |
5 | [Hibernate] Hibernate Tutorial | 황제낙엽 | 2012.11.15 | 247 |
4 |
[Hibernate] 하이버네이트 참조문서 버전 3.2 cr3의 최신 업데이트 한글 번역본
![]() | 황제낙엽 | 2007.07.03 | 172 |
» | [Hibernate] 페이징 처리 정리 | 황제낙엽 | 2007.02.26 | 515 |
2 | [Hibernate] Hibernate 프레임워크를 이용한 효율적인 개발 전략 | 황제낙엽 | 2007.01.30 | 452 |
1 |
[Hibernate] Hibernate 와 Ant 에서 composite id 사용하기 예제
![]() | 황제낙엽 | 2005.11.29 | 219 |