Я в значительной степени новичок в Spring & Hibernate. В нашей команде мы создаем веб-приложение, используя Struts 2 для уровня представления, с Spring 3 и Hibernate 3 (с аннотациями) внизу. Мы все еще обсуждаем, использовать ли DAO или нет и Session
или EntityManager
для операций CRUD. Оставив вопрос о том, какой из них лучше, чем другой, я столкнулся с другой проблемой, используя EntityManager
.
Моя цель - создать реферат (универсальный) Service
, который представит 4 основные операции: сохранение, удаление, поиск по идентификатору и поиск всех по классам. Другие службы унаследуют это и просто реализуют пользовательские находки или обновления (это может измениться в будущем). Проблема в том, что я не уверен, куда поместить аннотированный EntityManager
. Я понимаю, что если я вызову save () в службе из моего Action
, то есть Боба, который наследует save()
от родителя Person Service
, система не сможет внедрить EntityManager
, потому что Service Person имеет не был вызван, а аннотация @PersistenceContext
не была проанализирована.
Есть ли способ обойти эту проблему? Я хотел бы использовать наследование для своих служб, потому что это уменьшило бы объем кода, необходимый для простых операций.