Para obter produtos do banco de dados, você precisa usar o padrão de design de repositório do Magento 2.
Cada módulo pode ser empacotado com seus próprios repositórios, e o módulo Catálogo de Produtos não é diferente.
Você pode usar a injeção de dependência em sua classe para acessar o repositório. Um exemplo de trabalho ficaria assim:
class Example
{
/**
* @var \Magento\Catalog\Model\ProductRepository
*/
protected $productRepository;
/**
* @param \Magento\Catalog\Model\ProductRepository $productRepository
*/
public function __construct(
\Magento\Catalog\Model\ProductRepository $productRepository
) {
$this->productRepository = $productRepository;
}
/**
* Get product by ID
* @return \Magento\Catalog\Api\Data\ProductInterface
* @throws \Magento\Framework\Exception\NoSuchEntityException
*/
public function getProductById(int $productId)
{
return $this->productRepository->getById($productId);
}
}
Um repositório no Magento 2 possui inúmeras funcionalidades, como salvar ou excluir um produto, além de obter uma lista de produtos e usar um filtro, mas isso está além do escopo deste exemplo.