Разница между ObjectManager и EntityManager в Symfony2?


в чем разница между DoctrineCommonPersistenceObjectManager и DoctrineORMEntityManager при использовании его в пользовательском типе формы?

Я могу получить respository, используя как $this->em->getRepository() и $this->om->getRepository().

class MyFormType extends SymfonyComponentFormAbstractType
{

    /**
     * @var DoctrineORMEntityManager
     */
    protected $em;

    public function __construct(DoctrineORMEntityManager $em)
    {
        $this->em = $em;
    }

 }

вместо:

class MyFormType extends SymfonyComponentFormAbstractType
{

    /**
     * @var DoctrineCommonPersistenceObjectManager
     */
    protected $om;

    public function __construct(DoctrineCommonPersistenceObjectManager $om)
    {
        $this->om = $om;
    }

 }
1 56

1 ответ:

ObjectManager - это интерфейс и EntityManager - это его реализация ORM. Это не единственная реализация; например,DocumentManager от MongoDB ODM реализует его также. ObjectManager обеспечивает только общее подмножество всех его реализаций.

если вы хотите, чтобы ваш тип формы работал с любым ObjectManager реализации, а затем использовать его. Таким образом, вы можете переключиться с ORM на ODM, и ваш тип все равно будет работать одинаково. Но если вам нужно что-то конкретное, что только EntityManager обеспечивает и не планируя перейти на ODM, используйте его вместо этого.