[JPA] JQPL 사용해서 페이징 수행
- Coding/JPA
- 2022. 2. 24.
반응형
728x90
반응형
예제코드
Member.java
package jpql;
import javax.persistence.*;
@Entity
@Table(name="MEMBER")
@Getter
@Setter
public class Member {
@Id
@GeneratedValue
private Long id;
private String username;
private int age;
...
}
Main.java
package main.paging;
import jpql.Member;
import javax.persistence.*;
import java.util.List;
public class JpaMain {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
EntityManager em = emf.createEntityManager(); //엔티티 매니저 생성
EntityTransaction tx = em.getTransaction(); //트랜잭션 기능 획득
tx.begin();
try {
Member member = new Member();
member.setUsername("kimseohae");
member.setAge(10);
em.persist(member);
// as m 필수
TypedQuery<Member> query = em.createQuery("select m from Member as m order by m.age desc", Member.class)
.setFirstResult(0) // 0 : limit ? // 0 이상 : limit ? offset ?
.setMaxResults(10);
List<Member> resultList = query.getResultList();
System.out.println("result.size = " + resultList.size());
tx.commit();
} catch (Exception e) {
e.printStackTrace();
tx.rollback(); //트랜잭션 롤백
} finally {
em.close(); //엔티티 매니저 종료
}
}
}
STEP1. createQuery()
// as m 필수
TypedQuery<Member> query = em.createQuery("select m from Member as m order by m.age desc", Member.class)
.setFirstResult(0)
.setMaxResults(10);
- setFirstResult(0) 일 경우
limit ?
- setFirstResult(1) 일 경우 (0이 아닌 경우)
limit ? offset ?
STEP2. getResultList()를 사용하여 여러 row를 List 객체에 담고 size 출력
List<Member> resultList = query.getResultList();
System.out.println("result.size = " + resultList.size());
반응형
'Coding > JPA' 카테고리의 다른 글
[JPA] JQPL enum Type 조건문 사용하는 경우 (0) | 2022.03.08 |
---|---|
[JPA] JQPL JOIN (Inner Join/Left Join/Seta Join) (0) | 2022.02.28 |
[JPA] 복합키 - 비식별관계 매핑하기 (@IdClass, @EmbeddedId) (0) | 2022.02.09 |
[JPA] 고급매핑 - 조인 전략, 단일 테이블 전략, 구현 클래스별 테이블 전략 (0) | 2022.02.07 |
JPA 중복 컬럼 상속으로 생성하는 방법 (0) | 2022.01.16 |