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 {@link BytecodeProvider} is not enough for Hibernate to be able to recognize new providers. You would additionally need to make appropriate code changes to the {@link org.hibernate.intercept.Helper} class. This is because the detection of these enhanced classes is needed in a static environment (i.e. outside the scope of any {@link org.hibernate.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).