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