Хорошо, я решил расширить свой комментарий.
На мой взгляд, лучшим способом было бы генерировать идентификатор внутри dao, потому что вам нужен идентификатор для сохранения объекта в базе данных, поэтому вы должны быть уверены, что идентификатор сгенерирован. Например, если у вас есть несколько клиентов, и каждый клиент может сохранить объект базы данных студент, было бы трудно убедиться, что каждый клиент использует метод генератора идентификаторов надлежащим образом. Если вы используете этот метод, вам не нужно заботиться о проверке идентификатора.
Кроме того, генерирование идентификатора внутри dao следует принципу низкой связи.