JPA

[JPA] JPQL / 페이징 처리

솔솔 2021. 6. 28. 09:33
반응형

안녕하세요 :>

 

JPQL이란?

JPQL은 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어입니다.

JPA에서 자동으로 쿼리를 만들어주는데 조인을 걸어야하고, 검색 조건을 걸어야한다면 어떻게 처리를 할 것 인가? 를 도와주는 것이 JPQL입니다. 

 

- SQL과 문법 유사, SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN 등을 지원

- JPQL은 엔티티 객체를 대상으로 쿼리 / SQL은 데이터베이스 테이블을 대상으로 쿼리

- JPQL은 DB가 바뀌어도 쿼리를 바꿀 필요가 없음 JPA에서 알아서 변경해줌

 

createQuery를 통해 우리가 쿼리를 작성하면 

List<Member> result = em.createQuery("select m from Member as m", Member.class).getResultList();

for(Member m : result) {
	System.out.println("member.name = " + m.getName());
}

내가 작성한 쿼리는 주석에 있고 JPA가 그에 맞게 쿼리를 작성해서 표출해줍니다.

 

페이징 처리는 어떻게 할까요?

setFirstResult() : 첫번째 값

setMaxResult() : 마지막 값

List<Member> result = em.createQuery("select m from Member as m", Member.class).setFirstResult(0).setMaxResults(9).getResultList();

H2 DB로 limit 쿼리 작성 된걸 볼 수 있고

Oracle일 경우 rownum으로 쿼리가 작성됩니다.

 

 

인강으로 공부하면서 작성하는 글로 잘못된 정보가 있을 수도 있습니다! 잘못된 정보가 있을 시 댓글달아주세요 : 0

반응형