Дано: простое веб-приложение JSF (без шва), имея JSF-бины, вызывающие несколько EJB, которые, в свою очередь, загружают и сохраняют объекты JPA. Я хочу использовать аннотацию @Singleton
для ejb и ввести EntityManager
вместо EntityManagerFactory
:
@Singleton
public class MyEJB {
@PersistenceContext(unitName = PERSISTENCE_UNIT_NAME)
protected EntityManager em; // not EntityManagerFactory
}
Spec говорит, что @Singleton
является потокобезопасным, поддерживает атрибуты параллелизма и транзакции, которые (из моего обзора) делают его безопасным для вызова из JSF beans. Я ожидаю также повышения производительности из-за того, что EntityManager
не воссоздается для каждого вызова и его возможности внутреннего кэширования.
Меня больше всего беспокоит операция создания / обновления сущностей JPA в ситуации, когда у меня есть несколько синглтонов и, как следствие, такое же количество долгоживущих EntityManager.
Заранее большое спасибо!