Раньше я создавал некоторые JPA-файлы, которые использовали экземпляр javax.persistence.EntityManager
для каждого экземпляра DAO; так настраивается большинство примеров.
public class BaseDaoThatEveryDaoExtends {
@PersistenceContext
private EntityManager entityManager;
}
Я только что наткнулся на код, который использует static javax.peristence.EntityManger
, введенный аннотацией PersistenceContext
, архитектор сказал мне, что это не вызывает проблем, и они никогда не было проблем даже в кластеризованном приложении с JTA и источником данных XA:
public class BaseDaoThatEveryDaoExtends {
@PersistenceContext
private static EntityManager entityManager;
}
Насколько я могу судить, это анти-шаблон, поскольку EntityManager
хранит некоторую информацию о состоянии и делает его статическим. это все приложение штата в ширину. Также это делает классы очень сложными для тестирования.
Есть ли у этого другие недостатки или это стандартный способ использования EntityManager
?