2012-04-23 2 views
51
Doctrine\Common\Persistence\ObjectManagerDoctrine\ORM\EntityManager 사용자 지정 양식 유형에서 사용 사이의 차이는 무엇

?Symfony2의 ObjectManager와 EntityManager의 차이점은 무엇입니까?

나는 $this->em->getRepository()$this->om->getRepository() 모두를 사용하여 respository를 얻을 수 있습니다. 대신

class MyFormType extends \Symfony\Component\Form\AbstractType 
{ 

    /** 
    * @var Doctrine\ORM\EntityManager 
    */ 
    protected $em; 

    public function __construct(Doctrine\ORM\EntityManager $em) 
    { 
     $this->em = $em; 
    } 

} 

:

class MyFormType extends \Symfony\Component\Form\AbstractType 
{ 

    /** 
    * @var Doctrine\Common\Persistence\ObjectManager 
    */ 
    protected $om; 

    public function __construct(Doctrine\Common\Persistence\ObjectManager $om) 
    { 
     $this->om = $om; 
    } 

} 

답변

87

ObjectManager는 인터페이스이며 EntityManager는 ORM 구현입니다. 유일한 구현은 아닙니다. 예를 들어 MongoDB ODM의 DocumentManager도이를 구현합니다. ObjectManager은 모든 구현의 공통 하위 집합만을 제공합니다.

당신이 양식 유형이 어떤 ObjectManager 구현 작업 할 경우, 다음을 사용합니다. 이렇게하면 ORM에서 ODM으로 전환 할 수 있으며 유형은 여전히 ​​동일하게 작동합니다. 그러나 EntityManager 만 제공하고 ODM으로 전환 할 계획이없는 구체적인 것이 필요한 경우 대신 사용하십시오.

+0

와우, 감사합니다! ObjectManager를 사용하겠습니다. – gremo

+0

EntityManager의 사용이 이제는 더 이상 사용되지 않거나 최소한 종속성 삽입에서 사용되는 것 같습니다. 하지만 올바른 경우 엔 EntityManagerInterface가 있고, Objectmanager와 EntityManagerInterface의 차이점을 알지 못합니다. –

관련 문제