There are two types of managing EntityManager: container managed and application managed. For application managed, the preferred method of obtaining EntityManager is through EntityManagerFactory. Java EE tutorial says this:
Container-Managed Entity Managers 
With a container-managed entity
  manager, an EntityManager instance’s persistence context is
  automatically propagated by the container to all application
  components that use the EntityManager instance within a single Java
  Transaction API (JTA) transaction.
JTA transactions usually involve calls across application components.
  To complete a JTA transaction, these components usually need access to
  a single persistence context. This occurs when an EntityManager is
  injected into the application components by means of the
  javax.persistence.PersistenceContext annotation. The persistence
  context is automatically propagated with the current JTA transaction,
  and EntityManager references that are mapped to the same persistence
  unit provide access to the persistence context within that
  transaction. By automatically propagating the persistence context,
  application components don’t need to pass references to EntityManager
  instances to each other in order to make changes within a single
  transaction. The Java EE container manages the lifecycle of
  container-managed entity managers.
To obtain an EntityManager instance, inject the entity manager into
  the application component:
@PersistenceContext 
EntityManager em; 
Application-Managed Entity Managers 
With an application-managed entity manager, on the other
  hand, the persistence context is not propagated to application
  components, and the lifecycle of EntityManager instances is managed by
  the application.
Application-managed entity managers are used when applications need to
  access a persistence context that is not propagated with the JTA
  transaction across EntityManager instances in a particular persistence
  unit. In this case, each EntityManager creates a new, isolated
  persistence context. The EntityManager and its associated persistence
  context are created and destroyed explicitly by the application. They
  are also used when directly injecting EntityManager instances can’t be
  done because EntityManager instances are not thread-safe.
  EntityManagerFactory instances are thread-safe.
http://docs.oracle.com/javaee/6/tutorial/doc/bnbqw.html