JPA EntityManager Static or Instance?

Раньше я создавал некоторые 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 ?

7
задан Bhesh Gurung 23 December 2011 в 22:36
поделиться