Re: Дизайн слоя доступа к данным
От: L_G Россия  
Дата: 27.02.19 12:25
Оценка:
scf,
не ответ "за какой вариант", но мысли на тему:

если речь о БД, в которых традиционно записи имеют ключевое поле (ID) —
играет роль момент и место генерации этого ID для новых записей.

в варианте (а) скорее всего метод "create" будет присваивать объекту сгенеренный на стороне сервера ID
и не должен срабатывать вообще, если ID объекту уже присвоен,
а метод "update", наоборот, не должен срабатывать при ID==null.

в варианте (b) метод "save" должен либо требовать ID!=null,
(т.е. интерфейсу нужен дополнительный метод "get_new_id" и одним "save" не обойтись),
либо он 1) будет не идемпотентным, при этом еще 2) генерация ID без участия сервера чревата проблемой неуникальных ID.
Каша в голове — пища для ума (с)
Отредактировано 27.02.2019 12:50 L_G . Предыдущая версия . Еще …
Отредактировано 27.02.2019 12:33 L_G . Предыдущая версия .
Re[2]: Дизайн слоя доступа к данным
От: Artem Korneev США https://www.linkedin.com/in/artemkorneev/
Дата: 25.03.19 09:40
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Во втором случае проблемы с идемпотентностью, поэтому в лес.


А где там проблемы с идемпотентностью?
Таки save() как раз можно вызывать столько раз, сколько хочется. А create() выдаст эксепшн при повторном вызове.
С уважением, Artem Korneev.
Re[3]: Дизайн слоя доступа к данным
От: Ночной Смотрящий Россия  
Дата: 25.03.19 12:54
Оценка:
Здравствуйте, Artem Korneev, Вы писали:

AK>А где там проблемы с идемпотентностью?

AK>Таки save() как раз можно вызывать столько раз, сколько хочется.

Почти всегда создание объектов не идемпотентно, а обновление — да. Если намешать в кучу — придется и обновление делать неидемпотентным.

AK> А create() выдаст эксепшн при повторном вызове.


Эксепшен при повторном вызове не означает отсутствия идемпотентности, так как не меняет состояние сервера.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.