Как известно, есть два способа сформировать интерфейс изменения объекта в DAO:
a) create/update, где первое возвращает ошибку при попытке сохранить существующий объект, а второе — при попытке обновить новый.
b) save, который умеет и создавать, и обновлять объекты