У меня есть возможность ввести NHibernate в мою группу, используя его с некоторыми новыми компонентами, которые добавляются в устаревшее приложение. Я пытаюсь понять, как использовать шаблон DAO с NHibernate, и я смущен архитектурным вопросом.Должно ли лицо когда-либо знать что-либо о его DAO?
В моей вымышленном Например, скажем, у меня есть CarDAO и сущность автомобиля:
public interface CarDAO {
Car FindById(int id)
... // everything else
}
public interface Car {
... various properties and methods
}
У меня есть потребность быть в состоянии преобразовать автомобиль с правым рулем. Поскольку это будет очень сложная операция, мне нужно выполнить хранимую процедуру. Я не понимаю, куда должен идти метод ConvertToRightHandDrive().
Для меня имеет смысл поставить метод на автомобиль и дать ему вызов метода на CarDAO, который выполнит хранимую процедуру. И вот здесь я не ясен:
- must Car имеет ссылку на CarDAO и вызывает CarDAO.ConvertToRightHandDrive?
- Должен ли быть какой-то уровень CarService, который вызывает CarDAO.ConvertToRightHandDrive?
- что касается впрыска CarDAO через способ на автомобиль (Car.ConvertToRightHandDrive (автомобильDAO))
- какой-нибудь другой опция?
Возможно, это только религиозный аргумент, и люди имеют разные мнения относительно того, должно ли Суть иметь ссылку на его DAO (или любой другой DAO, если на то пошло). Я некоторое время искал StackOverflow и видел несколько дискуссий по этой теме; но я бы интересовался мнениями людей в этом конкретном сценарии.
Интересно - это было отредактировано, пока я редактировал, поэтому я потерял промежуточные изменения (и это не видно в истории). Извиняюсь, что кто-то редактирует меня, я уничтожил – Basic
Возможно, было бы неплохо упомянуть эту проблему и в [meta] (http://meta.stackoverflow.com). –
Последующий вопрос ... Если я создаю CarManager, который теперь имеет зависимость от CarDAO, должен ли этот класс менеджера также получить метод для получения автомобиля по идентификатору (только для прохода через вызов CarDAO.FindById ())? Должен ли CarManager.GetCar (id) быть основным методом получения автомобиля? –