Passei por alguns tutoriais no Magento 2, e isso me confunde um pouco. Eu posso ver que existem basicamente duas maneiras pelas quais podemos ler / gravar entidades comerciais:
Recuperar dados
Usando uma abordagem de fábrica
$object = $this->myFactory->create();
$object->load($myId);
Usando uma abordagem de repositório
$repo = $this->myRepository();
$object = $repo->getById($myId);
Guardar dados
Usando uma abordagem de fábrica
$object = $this->myFactory->create();
$object->load($myId);
$object->setData('something', 'somethingDifferent')->save();
Usando uma abordagem de repositório
$repo = $this->myRepository();
$object = $repo->getById($myId);
$object->setData('something', 'somethingDifferent');
$repo->save($object);
Também vejo que tanto um repositório quanto uma classe de fábrica podem ser injetados usando injeção de dependência. Isso é confuso, pelo menos para mim.
Quando devemos usar uma abordagem de repositório e uma abordagem de fábrica? Qual é a melhor prática que precisamos seguir?