Разница между 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 ответ:
ObjectManager- это интерфейс иEntityManager- это его реализация ORM. Это не единственная реализация; например,DocumentManagerот MongoDB ODM реализует его также.ObjectManagerобеспечивает только общее подмножество всех его реализаций.если вы хотите, чтобы ваш тип формы работал с любым
ObjectManagerреализации, а затем использовать его. Таким образом, вы можете переключиться с ORM на ODM, и ваш тип все равно будет работать одинаково. Но если вам нужно что-то конкретное, что толькоEntityManagerобеспечивает и не планируя перейти на ODM, используйте его вместо этого.