Ответ 1
Я бы сказал:
- требуется установить/получить версию, так как вы можете иногда назначать версию (при воссоздании нового экземпляра из старых данных)
- Вам не нужно, если вы читаете экземпляр из базы данных. (Создав его в своем коде с новым, это будет другая история).
- Я больше ничего не вижу. У меня никогда не было проблем с базой данных.
- Unit test не переходите на базу данных, на мой взгляд, поэтому тесты, связанные с базой данных, называются интеграционными тестами. У вас не должно быть слишком много, поскольку они медленны, и они действительно не проверяют ваш код, но больше кодов Hibernate/Driver/Database... Вы должны доверять им или просто тестировать их один раз, но не для всех ваших сущностей.
Чтобы увидеть значения версий более 0, прочитайте/измените/обновите свою сущность в транзакции, версия увеличится на единицу. Выйдите из транзакции, сделайте это снова, значение увеличивается... - Версия будет увеличиваться при каждом изменении строки базы данных.