/**
  * Get the Doctrine EntityManager
  *
  * @return \Doctrine\ORM\EntityManager
  */
 public function getEntityManager()
 {
     if ($this->entityManager !== null) {
         return $this->entityManager;
     }
     Tx_Doctrine2_ExtbaseBootstrap::bootstrapAutoloading();
     // Dev Mode decides if proxies are auto-generated every request
     // and what kind of cache is used for the metadata.
     $isDevMode = self::getDevMode();
     $config = new \Doctrine\ORM\Configuration();
     if ($isDevMode) {
         $config->setAutoGenerateProxyClasses(true);
     }
     $config->setProxyDir(PATH_site . 'typo3temp/doctrine2');
     $config->setProxyNamespace('TxDoctrine2Proxies');
     $cache = $this->createCache($isDevMode);
     $config->setMetadataCacheImpl($cache);
     $config->setQueryCacheImpl($cache);
     $paths = $this->getEntityDirectories();
     $driverImpl = $config->newDefaultAnnotationDriver($paths);
     $config->setMetadataDriverImpl($driverImpl);
     $config->addFilter('enableFields', 'Tx_Doctrine2_Persistence_EnableFieldsFilter');
     if (!\Doctrine\DBAL\Types\Type::hasType('timestamp')) {
         \Doctrine\DBAL\Types\Type::addType('timestamp', 'Tx_Doctrine2_Types_TimestampType');
     }
     $dbParams = $this->getDatabaseParams();
     $evm = $this->createEventManager();
     $this->entityManager = \Doctrine\ORM\EntityManager::create($dbParams, $config, $evm);
     $this->entityManager->getFilters('enableFields')->enable('enableFields');
     if ($this->objectManager instanceof Tx_Doctrine2_ObjectManager) {
         $this->objectManager->setEntityManager($this->entityManager);
     }
     return $this->entityManager;
 }