OrderQueryService.java
package com.dmasone.identity.orders.application;
import com.dmasone.identity.orders.domain.OrderNotFoundException;
import com.dmasone.identity.orders.domain.OrderRepository;
import java.util.UUID;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* Query facade for order retrieval. Keeping this separate from placement makes
* the command and read paths explicit without introducing a second datastore.
*/
@Service
public class OrderQueryService {
private final OrderRepository orderRepository;
public OrderQueryService(OrderRepository orderRepository) {
this.orderRepository = orderRepository;
}
@Transactional(readOnly = true)
public OrderResponse findById(UUID orderId) {
return orderRepository.findById(orderId)
.map(OrderResponse::from)
.orElseThrow(() -> new OrderNotFoundException(orderId));
}
}