package jpql;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import java.util.List;
public class JpqlMain {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
try {
for (int i = 0; i < 100; i++) {
// 나이가 1씩 증가하는 Member 객체 100개 생성 (0~99)
Member member = new Member();
member.setUsername("member"+i);
member.setAge(i);
em.persist(member);
}
em.flush();
em.clear();
// Member 객체를 조회할 때, 나이 역순으로 조회
List<Member> result = em.createQuery("select m from Member m order by m.age desc", Member.class)
.setFirstResult(1) // 인덱스 1번부터, SetFirstResult: 조회할 시작 번호 (100개의 Member 객체 중 1번이니까 나이는 98)
.setMaxResults(10) // 10개 조회, setMaxResults: 조회할 데이터 개수
.getResultList();
for (Member member : result) {
System.out.println("member = " + member); // toString() 처리함
}
tx.commit();
} catch (Exception e) {
tx.rollback(); // 오류 발생 시 롤백
e.printStackTrace(); // 에러 내용 출력
} finally {
//종료
em.close();
}
emf.close();
}
}
쿼리문 내부의 "orderby xxx": xxx 순으로 sort
- setFirstResult(start_idx): 갖고온 데이터들 중 조회 할 시작 인덱스 표시
- setMaxResults(data_nums): 가져올 데이터 개수
Hibernate:
/* select
m
from
Member m
order by
m.age desc */ select
member0_.id as id1_0_,
member0_.age as age2_0_,
member0_.TEAM_ID as team_id4_0_,
member0_.username as username3_0_
from
Member member0_
order by
member0_.age desc limit ? offset ?
member = Member{id=99, username='member98', age=98}
member = Member{id=98, username='member97', age=97}
member = Member{id=97, username='member96', age=96}
member = Member{id=96, username='member95', age=95}
member = Member{id=95, username='member94', age=94}
member = Member{id=94, username='member93', age=93}
member = Member{id=93, username='member92', age=92}
member = Member{id=92, username='member91', age=91}
member = Member{id=91, username='member90', age=90}
member = Member{id=90, username='member89', age=89}
'Spring > JPA' 카테고리의 다른 글
JPA-타입 표현 (0) | 2023.05.20 |
---|---|
JPA- 조인 (0) | 2023.05.14 |
JPA- 프로젝션 (0) | 2023.05.12 |
JPA- 기본 문법과 쿼리 API (0) | 2023.05.07 |
JPA- 값 타입 컬렉션 (0) | 2023.04.30 |