This package defines the API for plugging in bytecode libraries
for usage by Hibernate. Hibernate uses these bytecode libraries
in three scenarios:
Reflection optimization - to speed up the performance of
POJO entity and component conctruction and field/property access
Proxy generation - runtime building of proxies used for
deferred loading of lazy entities
Field-level interception - build-time instrumentation of entity
classes for the purpose of intercepting field-level access (read/write)
for both lazy loading and dirty tracking.
Currently, both CGLIB and Javassist are supported out-of-the-box.
Note that for field-level interception, simply plugging in a new BytecodeProvider
is not enough for Hibernate to be able to recognize new providers. You would additionally
need to make appropriate code changes to the Helper
class. This is because the detection of these enhanced classes is needed in a static
environment (i.e. outside the scope of any SessionFactory .
Note that in the current form the ability to specify a different bytecode provider
is actually considered a global settings (global to the JVM).
This package defines the API for plugging in bytecode libraries for usage by Hibernate. Hibernate uses these bytecode libraries in three scenarios:
Currently, both CGLIB and Javassist are supported out-of-the-box.
Note that for field-level interception, simply plugging in a new BytecodeProvider is not enough for Hibernate to be able to recognize new providers. You would additionally need to make appropriate code changes to the Helper class. This is because the detection of these enhanced classes is needed in a static environment (i.e. outside the scope of any SessionFactory .
Note that in the current form the ability to specify a different bytecode provider is actually considered a global settings (global to the JVM).