Мы используем Spring, и это упрощает работу с аннотацией @PersistenceContext, которая может по выбору принимать тот же самый блок постоянства в persistence.xml, а также предоставляет хорошие тестовые среды, такие как JUnit.
@PersistenceContext
public EntityManager entityManager;
Синглтоны, как известно, сложно тестировать (вам придется добавить такие вещи, как setForTest () и resetForTest ()), также известные как singletonitus . Тратя время на использование контейнера IoC (весной или в Google), вы значительно упрощаете рефакторинг, тестирование и расширение кода.