@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
дает вам больший контроль над вашим контекстом, поскольку он предоставляет вам возможность указывать необязательные элементы, например. имя, свойства