Как правильно спроектировать "общение" с базой данных ?
Антон Бояршинов

Если я правильно понял суть паттерна DAO , то мы имея общий интерфейс реализуем запись каждого объекта,реализуя интерфейс для каждого объекта.
Отлично, предположим у меня есть DAO c методами select,insert,delete,update и я реализую его для,например,накладной. Поулчаю класс WaybillDAO который умеет сохранять,обрать,обновлять накладную. А вот теперь предположим мне нужен метод не для полного обновления накладной (update) а лишь для того,что бы ,к примеру, только 1 поле обновить ?
Как с точки зрения проектирования будет правильно это реализовать ?
Само собой понятно,что добавлять метод в интерфейс не вариант,ведь у других классов такого поля может и не быть,и я не думаю что будет правильно из-за 1 поля во всех классах потом заглушку делать.
Но и в класс отдельно метод добавить не верно, будет как мне кажется.
Ведь к dao я везде обращаюсь через интерфейс...Придется каждый раз при обновлении поля приведение типов использовать.
Единственное что приходит на ум - загружать целиком всю накладную,менять у объекта значение поля,а потом все поля обновлять через update (то есть целиком объект обновлять в бд,а не одно поле). Разве что у БД есть оптимизация,которая при попытке обновить эквивалентные поля пропустит их а обновит только отличные(впрочем,думаю так оно и есть)

2 чел.