Spring, Hibernate, EntityManager и наследование классов - PullRequest
2 голосов
/ 16 марта 2010

Я в значительной степени новичок в 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 не была проанализирована.

Есть ли способ обойти эту проблему? Я хотел бы использовать наследование для своих служб, потому что это уменьшило бы объем кода, необходимый для простых операций.

1 Ответ

0 голосов
/ 13 апреля 2011

Эта ссылка может быть полезна.

Если вы в конечном итоге будете использовать Session объекты, вы захотите изучить HibernateDaoSupport , который будет прекрасно функционировать в качестве базового класса для вашего общего класса обслуживания.

...