Interface ClassTransformer

All Superinterfaces:
ClassTransformer
All Known Implementing Classes:
EnhancingClassTransformerImpl

public interface ClassTransformer extends ClassTransformer
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 Type
    Method
    Description
    void
    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 interface ClassTransformer
      Parameters:
      loader - The defining class loader of the class being transformed. It may be null if using bootstrap loader
      className - The name of the class being transformed
      classBeingRedefined - If an already loaded class is being redefined, then pass this as a parameter
      protectionDomain - ProtectionDomain of the class being (re)-defined
      classfileBuffer - The input byte buffer in class file format
      Returns:
      A well-formed class file that can be loaded
      Throws:
      TransformerException
    • discoverTypes

      void discoverTypes(ClassLoader loader, String className)