В настоящее время я изучаю новые модели компонентов Java EE 6 и меня смущает новейший механизм внедрения зависимостей. Итак, вот мои вопросы:
1) В чем разница между @Inject и @ EJB
2) Если у меня есть простой POJO, который содержит другие POJO (один из них - код DAO), что будет лучшим выбором: @Inject или @EJB?
Можно ли смешивать @Inject и @EJB?
Примером может быть:
ClassA реализует интерфейс A и имеет
экземпляр ClassA_Adaptor
ClassA_Adaptor реализует InterfaceAB
и имеет экземпляр класса B
ClassB реализует интерфейс B и имеет
экземпляр ClassB_Adaptor и
экземпляр DAO_ClassB
ClassB_Adaptor реализует интерфейс B
и имеет экземпляр ClassC
ClassC реализует InterfaceBC и имеет
экземпляр WebService_ClassC
DAO_ClassB будет использовать JPA 2.0
(@PersistenceContext)
Я бы хотел внедрить их всех, включая DAO и WebService.
3) Это плохой подход - использовать транзакционные только для определенных операций, но не для всех?
В качестве примера: некоторые методы в DAO_ClassB являются вашим типичным запросом, в то время как другие методы являются методами «записи». Разве не оборачивать методы READ транзакцией?
Насколько я понимаю, DAO_ClassB можно обернуть транзакцией, используя @EJB (внедрите DAO_ClassB и сделайте все методы транзакционными). Как я могу это контролировать?
Извините, если некоторые вопросы сбивают с толку, потому что я знаю только кусочки новой модели компонента Java EE 6.