@Autowired vs @PersistenceContext для EntityManager bean

В чем разница между

@Autowired
private EntityManager em;

и

@PersitenceContext
private EntityManager em;

Оба варианта работают в моем приложении, но могу ли я что-то сломать с помощью @Autowired аннотации?

Ответ 1

@PersistenceContext позволяет указать, какой блок персистентности вы хотите использовать. В вашем проекте может быть несколько источников данных, подключенных к различным БД, и @PersistenceContext позволяет вам указать, какой из них вы хотите использовать

проверьте объяснение здесь: http://www.coderanch.com/t/481448/java-EJB-SCBCD/certification/unitName-PersistenceContext

Ответ 2

@PersistenceContext

не возвращает экземпляр управления сущностью

он возвращает управляемый контейнером прокси, который получает и освобождает контекст присутствия от имени кода приложения

Ответ 3

@PersistenceContext представляет собой стандартную аннотацию JPA, предназначенную для этой конкретной цели. В то время как @Autowired используется для любой инъекции зависимостей в Spring. Использование @PersistenceContext дает вам больший контроль над вашим контекстом, поскольку он предоставляет вам возможность указывать необязательные элементы, например. имя, свойства