Package org.hibernate.bytecode.spi
Interface ClassTransformer
- All Superinterfaces:
ClassTransformer
- All Known Implementing Classes:
EnhancingClassTransformerImpl
A persistence provider provides an instance of this interface to the
PersistenceUnitInfo.addTransformer(jakarta.persistence.spi.ClassTransformer)
method.
The supplied transformer instance will get called to transform entity class
files when they are loaded and redefined. The transformation occurs before
the class is defined by the JVM.-
Method Summary
Modifier and TypeMethodDescriptionvoid
discoverTypes
(ClassLoader loader, String className) byte[]
transform
(@Nullable ClassLoader loader, String className, @Nullable Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) Invoked when a class is being loaded or redefined to add hooks for persistence bytecode manipulation.
-
Method Details
-
transform
byte[] transform(@Nullable ClassLoader loader, String className, @Nullable Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws TransformerException Invoked when a class is being loaded or redefined to add hooks for persistence bytecode manipulation.- Specified by:
transform
in interfaceClassTransformer
- Parameters:
loader
- The defining class loader of the class being transformed. It may be null if using bootstrap loaderclassName
- The name of the class being transformedclassBeingRedefined
- If an already loaded class is being redefined, then pass this as a parameterprotectionDomain
- ProtectionDomain of the class being (re)-definedclassfileBuffer
- The input byte buffer in class file format- Returns:
- A well-formed class file that can be loaded
- Throws:
TransformerException
-
discoverTypes
-