Подтвердить что ты не робот

Почему класс сущностей в JPA не может быть окончательным?

Почему класс сущностей в JPA не может быть окончательным или иметь окончательные методы? Цитируя здесь -

Класс сущности должен соответствовать следующим требованиям:

...

Класс не должен быть объявлен final. Никакие методы или постоянные переменные экземпляра не должны быть объявлены final.

В чем причина? Является ли JPA подклассом классов сущностей и переопределением методов?

4b9b3361

Ответ 1

По определению, объект - это класс, который может сохраняться в базе данных, поэтому наличие конечного поля не имеет смысла в контексте того, что в конечном итоге станет записью в вашей базе данных. Требование не иметь окончательного класса и никаких окончательных методов не связано с тем, как реализация JPA действительно имеет дело с сохраняющимися экземплярами классов ваших объектов.

Обычно реализации должны подклассифицировать ваш класс во время выполнения и/или добавлять байт-код динамически к вашим классам, чтобы обнаружить, когда произошло изменение объекта сущности. Если ваш класс объявлен как final, то это будет невозможно.

Есть, конечно, гораздо больше причин, чем просто те, вот статья, в которой содержится дополнительная информация о том, как ORM в целом работает за которые могут помочь вам лучше понять другие требования к объектам JPA.