public boolean isOpen(); public void close();
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 EntityManager
s from that
factory, and by extension all entities managed by those
EntityManager
s, become invalid. Attempting to close an
EntityManagerFactory
while one or more of its
EntityManager
s has an active transaction may result in an
IllegalStateException
.
Closing an EntityManagerFactory
should not be taken
lightly. 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. Once a factory is closed, all methods except
isOpen
throw an
IllegalStateException
.