When should EntityManagerFactory instance be created/opened?

  • EntityManagerFactory instances are
    heavyweight objects. Each factory
    might maintain a metadata cache,
    object state cache, EntityManager
    pool, connection pool, and more. If
    your application no longer needs an
    EntityManagerFactory, you should
    close it to free these resources.

  • When an EntityManagerFactory closes,
    all EntityManagers from that factory,
    and by extension all entities managed
    by those EntityManagers, become
    invalid.

  • It is much better to keep a factory
    open for a long period of time than
    to repeatedly create and close new
    factories. Thus, most applications
    will never close the factory, or only
    close it when the application is
    exiting.

  • Only applications that require
    multiple factories with different
    configurations have an obvious reason
    to create and close multiple
    EntityManagerFactory instances.

  • Only one EntityManagerFactory is
    permitted to be created for each
    deployed persistence unit
    configuration. Any number of
    EntityManager instances may be
    created from a given factory.

  • More than one entity manager factory
    instance may be available
    simultaneously in the JVM. Methods of the EntityManagerFactory
    interface are threadsafe.

Leave a Comment