He leído un par de tutoriales en Magento 2, y esto me confunde un poco. Puedo ver que básicamente hay dos formas en que podemos leer / escribir entidades comerciales:
Recuperar datos
Usando un enfoque de fábrica
$object = $this->myFactory->create();
$object->load($myId);
Usando un enfoque de repositorio
$repo = $this->myRepository();
$object = $repo->getById($myId);
Guardar datos
Usando un enfoque de fábrica
$object = $this->myFactory->create();
$object->load($myId);
$object->setData('something', 'somethingDifferent')->save();
Usando un enfoque de repositorio
$repo = $this->myRepository();
$object = $repo->getById($myId);
$object->setData('something', 'somethingDifferent');
$repo->save($object);
También puedo ver que, tanto un repositorio como una clase de fábrica se pueden inyectar usando inyección de dependencia. Esto es confuso al menos para mí.
¿Cuándo debemos usar un enfoque de repositorio y un enfoque de fábrica? ¿Cuál es la mejor práctica que debemos seguir?