Сервисный уровень внедряет несколько DAO на практике - PullRequest
1 голос
/ 11 мая 2011

Вот проблема проектирования между уровнем Dao и уровнем обслуживания:

На уровне DAO существуют классы DAO, называемые: Dao1, Dao2, Dao3 ...

В уровне обслуживания естьКлассы обслуживания называются: Service1, Service2, Service3 ...

Service1 необходимо ввести Dao1, Dao2, Dao3

Service2 необходимо ввести Dao2, Dao3, Dao4

Service3необходимо ввести Dao3

...

Пример создания пользователя:

UserService необходимо ввести UserDao для создания пользователя, также UserService необходимо ввести LogDao для записи системного журналаинформация.

Кажется, нам нужно выполнить какую-то повторяющуюся работу.Есть ли какое-нибудь решение на практике?Я использую Spring Framework.Использование аннотации @Resource для внедрения этих Dao в Service Class.

Мое решение: внедрить весь класс Dao (Dao1, Dao2, Dao3 ...) в класс DaoCollection, затем service1, service2, service3 ... все расширяет класс DaoCollection.Это хороший подход?

Thx

1 Ответ

5 голосов
/ 11 мая 2011

Вы должны будете в любом случае определить DAO, которые ваши службы используют, поэтому вам придется проделать эту «повторяющуюся» работу в некоторой степени.

В зависимости от используемой вами структуры (если таковая имеется) это объявление не должно быть слишком трудоемким (для ввода).

Пример в EJB 3 +:

class Service1 {
  @EJB private DAO1 dao1;
  @EJB private DAO2 dao2;
  @EJB private DAO3 dao3;
  ...
}

Я бы сказал, что вам не следует создавать общий суперкласс и вводить туда все возможные DAO. Скорее всего, это усложнит понимание (почему эти DAO существуют? Они используются ?, и т. Д.) И может даже иметь проблемы с производительностью, в зависимости от используемой платформы (вы можете внедрить каждый DAO в каждый сервис и, таким образом, создать большой пул неиспользованных экземпляров DAO).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...