I am trying to improve the following code removing any potential bottlenecks:
public List<PostDTO> getOrderDetails(int pageNumber) {
List<Order> orders = entityManager
.createQuery(“SELECT o FROM Order o”)
.setFirstResult((pageNumber - 1) * 20)
.setMaxResults(20)
.getResultList();
List<OrderDTO> result = new ArrayList(orders.size());
for(Order order : orders) {
OrderDTO orderDto = new OrderDTO();
orderDto.setId(order.getId());
orderDto.setTitle(order.getDate());
orderDto.setTopicName(order.getDetail().getProductId());
result.add(orderDto);
}
return result;
}
As per the following thread: What is the "N+1 selects problem" in ORM (Object-Relational Mapping)?, there could be a N+1 select issue, so I am using a join fetch this way:
List<Order> orders = entityManager
.createQuery(“SELECT o FROM Order o join fetch o.detail”)
.setFirstResult((pageNumber - 1) * 20)
.setMaxResults(20)
.getResultList();
List<OrderDTO> result = new ArrayList(orders.size());
Is this a good improvement? Is there another way to improve how I am querying using JPQL?