Разница между 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, используйте его вместо этого.