Полагаю, вы можете сделать и то и другое, так что выбор за вами.
Лично я пишу много вручную. Хотя Hibernate делает разумную работу по созданию базы данных для вас, он делает это не так хорошо, как я сам. Я бы предположил, что то же самое относится и к классам Java, которые он производит, хотя я никогда не использовал эту функцию.
Что касается сгенерированных классов (если вы пошли по пути генерации классов), я держу пари, что у каждого поля есть получатель / установщик, должны ли поля быть только для чтения или нет (кто-то сказал, что безопасность потоков и изменчивость) и что вы можете не добавляйте поведение, потому что оно переопределяется, если вы восстанавливаете классы.