Генерация спящего прокси

Я просматривал документацию по спящему режиму и нашел эти строки

Конструктор без аргументов необходим для всех персистентных классов; Hibernate должен создавать объекты для вас, используя Java Reflection. Конструктор может быть закрытым, однако для создания прокси-сервера во время выполнения и эффективного извлечения данных без инструментария байт-кода требуется пакетная или общедоступная видимость.

Может ли кто-нибудь объяснить создание прокси-сервера во время выполнения и эффективное извлечение данных без инструментов байт-кода?


person Bharat Bisht    schedule 31.05.2015    source источник


Ответы (1)


Прокси во время выполнения означает, что Hibernate обернет ваш класс классом Proxy. В отладчике видно, что инстанцируемые объекты относятся не к вашему типу, а к какому-то прокси.

Для этого Hibernate необходимо переопределить ваш класс. Конструктор без параметров необходим для вызова конструктора base(). Hibernate не знает, как заполнить ваши пользовательские параметры. Другая мысль состоит в том, чтобы сделать все ваши свойства и методы virtual, чтобы их тоже можно было переопределить.

Подумайте об этом, как будто у вас есть сторонняя библиотека (содержащая ваши постоянные классы), и теперь вам нужно добавить к ним некоторые общие функции, не читая документ и не анализируя класс за классом, свойство за свойством.

person Jan Zahradník    schedule 31.05.2015
comment
Хороший и хорошо объясненный ответ. - person cнŝdk; 05.06.2015