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

Hibernate - Разница между инструментами байткода и улучшением байткода?

Я использую Hibernate 4.2 и время сборки инструмента байт-кода для решения ленивой проблемы, которая появляется в отношении @OneToOne и @Lob (https://developer.jboss.org/wiki/SomeExplanationsOnLazyLoadingone-to-one)

Знаете ли вы, в чем разница между:

Инструмент для байт-кодов спящего режима: http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/ch20.html#performance-fetching-lazyproperties

Улучшение байт-кода в спящем режиме: http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/ch20.html#bytecode-enhancement

Потому что в документации на спящий режим написано:

The EnhancementTask предназначен для полной замены InstrumentTask. Кроме того, он также несовместим с InstrumentTask, поэтому любые существующие инструментальные классы необходимо будет снова создать из источника.

Я могу решить свою проблему с помощью инструментария байт-кода, но он не работает, используя расширение байт-кода. Ты знаешь почему?

Возможно, эта новая функция не полностью развита?

Спасибо за помощь.

4b9b3361

Ответ 1

Ответ заключается в том, как улучшается байт-код. Посмотрим, что произойдет в обоих случаях.

  • Инструмент Bytecode: добавление байт-кода к классу Java во время "времени выполнения". Это не совсем во время выполнения, но больше во время загрузки на Java-классе. Далее вы можете подробно прочитать этот пост.

и

  1. Улучшение байткода: Улучшение байткода может выполняться либо во время выполнения, либо во время сборки (в автономном режиме). Когда во время выполнения функции улучшения выполняются, постоянные классы расширяются по мере их загрузки. Когда обновление выполняется в автономном режиме, файлы классов улучшаются во время этапа после компиляции;

    В большинстве случаев улучшения байткода они выполняются при посткомпиляции. Если это имеет место с улучшением байт-кода Hibernate, то да, очевидным выбором для изменения кода является использование байтового кода.