개발/JAVA
[Java] Spring JPA findOne 과 findTop1 의 차이
여름청춘
2023. 8. 30. 19:20
결론
where 의 컬럼이 PK 또는 unique 한 값 (id, goodsId, no 등 값이 하나) 일 때 findOne 을 써도된다.
여러개 나와도 상위 1개 limit 1 을 얻고 싶은 경우에는 findTop1 을 써야 한다.
과정
내가 원하는 값은 상품번호로 조회하고 order by goodsId desc 로 정렬하여 상위 1개의 데이터를 뽑고싶었다.
1. findOne을 사용할 경우 돌아가는 쿼리
Repository.findOneByOrderByGoodsIdDesc();
select *
from
stock.shop_product
order by
goods_no desc
;
쿼리문을 컴파일해본 결과 limit 조건절이 생기지 않았다.
2. findTop1 을 사용할 경우 돌아가는 쿼리
Repository.findTop1ByOrderByGoodsIdDesc();
select *
from
stock.shop_product
order by
goods_no desc limit 1;
내가 원하는 대로 나왔다.
여기서 Top100 , Top1000 등 내가 원하는 limit 값을 설정할 수 있다.