У меня есть DAO, например, для доступа к базе данных токенов.
Можно ли использовать его для создания и немедленного сохранения новых объектов, как в примере ниже? (пример в PHP)
class TokenDao {
...
public function createToken($code) {
$token = new Token($code);
$this->entityManager->persist($token);
$this->entityManager->flush();
return $token;
}
}
Он немного объединяет фабрику объектов с DAO. Я думаю, что создание отдельной фабрики объектов и дао (и, возможно, перенос в фасад) — ненужные накладные расходы, но я хотел бы услышать от других, если это не плохая практика.
Я не нашел никаких положительных или отрицательных подсказок по статьям о шаблоне DAO, если это нормально или нет.
Спасибо за мнения / ответы.
По моему мнению, DAO следует использовать только для инкапсуляции базы данных, а не для выполнения какой-либо логики или создания.
В вашем примере другая проблема заключается в том, что если вы измените конструктор Token, вам придется изменить и TokenDao.
Мое мнение, создайте токен в отдельном слое от вашего DAO.
Других решений пока нет …