Persistence.createEntityManagerFactory(java.util.Map) will create a new EntityManagerFactoryProvider of the type specified in the "javax.persistence.provider" setting. This setting is the full class name of the EntityManagerFactoryProvider to construct. Then, the Persistence class will invoke createEntityManagerFactory(java.util.Map) on the provider, with a copy of the map passed to Persistence.createEntityManagerFactory(java.util.Map) merged with the contents of the persistence.properties resource, as loaded by the Persistence class. Implementations of this interface must have a public no-args constructor.