인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

궁금이님의 프로필 이미지
궁금이

작성한 질문수

실전! 스프링 데이터 JPA

순수 JPA 페이징과 정렬

JPQL로 페이징을 제공하지 않는 이유.

해결된 질문

작성

·

368

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
방언때문에 그런건가요? DB마다 메커니즘이나 사용 방법이 너무 상이해서 추상화 하기 어려운 건가요?

근데 JPQL은 다 방언 참고해서 나가지 않나요?

 

답변 1

0

안녕하세요. 궁금이님, 공식 서포터즈 David입니다.

혹시 강의 몇분몇초쯤에 그렇게 말씀하시는지 알 수 있을까요?

감사합니다.

궁금이님의 프로필 이미지
궁금이
질문자

아, 그 선생님께서 말씀하신 건 아니고,

그러니까 jpql 쓰면서 select m from Member m limit :limit 이런식으로 하지 않고 따로 메소드를 제공하잖아요. 순수 궁금해서 질문해봤습니다.

따로 찾아보니 jpql은 개발자가 얻고자 하는 엔티티에 더 집중시키기 위해서? 그런 말도 있는 것 같고, GPT는 DB마다 페이징 매커니즘이나 사용법같은게 상이하기 때문에 표준화? 하는데 어려움이 있을 수도.. 라고 하는데,

어차피 jpql나갈 때는 방언 참고해서 나가지 않나? 라는 생각이 들어서요.

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 궁금이님

페이징의 경우 데이터베이스 마다 제공하는 방법이 다릅니다. 따라서 이 부분이 표준화 되어 있지 않습니다. (참고로 해당 내용은 JPA 기본편 강의의 페이징에서 설명합니다 🙂 )

JPA의 경우 그래서 메서드에 페이징 조건을 넣으면 해당 조건을 기반으로 특정 데이터베이스에 맞는 SQL을 생성하게 됩니다.

JPQL 자체에 페이징 조건을 넣을 수도 있겠지만, 이렇게 하는 것 보다는 JPQL은 좀 더 단순하게 작성하고 여기에 페이징을 상황에 따라서 넣고 뺄 수 있게 메서드를 통해 기능을 제공하는 것으로 더 유연하게 설계한 것으로 이해하시면 됩니다.

감사합니다.

궁금이님의 프로필 이미지
궁금이

작성한 질문수

질문하기