What is the difference between injecting a PersistenceUnit to an EntityManagerFactory instance and injecting a PersistenceContext to an EntityManager instance?
SCJP 1.4, SCWCD 1.4 - Hints for you, Certified Scrum Master
Did a rm -R / to find out that I lost my entire Linux installation!
if you inject the entity manager, it is created, propagated and closed automatically by the container. If you inject the entity manager factory you have to perform all these steps programmatically. Therefore you'll usually inject the entity manager.
Reasons for using an entity manager factory are:
1. In a multi-threaded environment you'll prefer to use thread-safe instance variables. An entity manager factory is thread-safe, while an entity manager is not.
2. You want to use an application-managed persistence context.
Originally posted by Ralph Jaus: Without a container environment you'll have to use an EntityManagerFactory and application-managed persistence context.
The EntityManagerFactory can't be injected, but has to be created by the "Persistence" class like
Yes. Furthermore you have to close the EntityManagerFactory and the EntityManager when your program finishes. [ November 11, 2008: Message edited by: Ralph Jaus ]