[JPA활용 1] 주문 검색 기능 개발 예제
OrderService(+)
@Service
@Transactional(readOnly = true)
@RequiredArgsConstructor
public class OrderService {
// 생략
...
// 검색 코드 추가
public List<Order> findOrders(OrderSearch orderSearch) {
return orderRepository.findAll(orderSearch);
}
}
OrderSearch
검색 조건 파라미터
public class OrderSearch {
private String memberName; // 회원 이름
private OrderStatus orderStatus; // 주문 상태[ORDER, CANCEL]
// Getter and Setter
}
OrderRepository(+)
@Repository
public class OrderRepository {
// 생략
...
public List<Order> findAll(OrderSearch orderSearch) {
String jpql = "select o from Order o join o.member m" +
" where o.status = :status" +
" and m.name like :name";
return em.createQuery(jpql, Order.class)
.setParameter("status", orderSearch.getOrderStatus())
.setParameter("name", orderSearch.getMemberName())
.setMaxResults(1000) // 조회할 데이터 수
.getResultList();
}
}
findAll(OrderSearch orderSearch)
메서드는 검색 조건에 동적으로 쿼리를 생성해서 주문 엔티티를 조회한다.
나머지 Controller와 View 관련 코드는 생략…
댓글남기기