1. Slice로 받는 것에 대하여


Slice를 사용하는 것은 나쁘지 않은 선택이지만, 우리 상황에서는 List가 더 효율적이다.

비교


우리의 상황: Zero-Offset


	@Scheduled(fixedDelay = 60_000)
	public void autoCancelExpiredOrders() {
		while (true) {
			List<Order> expiredOrders = orderService.findExpiredOrders(LocalDateTime.now());
			if (expiredOrders.isEmpty()) {
				break;
			}
			purchaseFacade.cancelInBatch(expiredOrders);
		}
	}

우리는 while 루프를 돌면서 "조회된 데이터가 없으면 종료"하는 로직을 사용한다.

굳이 Slice.hasNext()를 통해 다음 페이지 존재 여부를 알 필요가 없다. 조회된 데이터가 없을 때 까지 수행된다.

따라서 굳이 limit + 1을 조회하는 오버헤드 없이, 깔끔하게 List로 받아 처리한다.