public interface BytecodeProvider
Contract for providers of bytecode services to Hibernate.
<p/>
Bytecode requirements break down into the following areas<ol>
<li>proxy generation (both for runtime-lazy-loading and basic proxy generation) getProxyFactoryFactory()
</li>
<li>bean reflection optimization getReflectionOptimizer(java.lang.Class, java.lang.String[], java.lang.String[], java.lang.Class[])
</li>
</ol>
Modifier and Type | Method and Description |
---|---|
Enhancer |
getEnhancer(EnhancementContext enhancementContext)
Returns a byte code enhancer that implements the enhancements described in the supplied enhancement context.
|
ProxyFactoryFactory |
getProxyFactoryFactory()
Retrieve the specific factory for this provider capable of
generating run-time proxies for lazy-loading purposes.
|
ReflectionOptimizer |
getReflectionOptimizer(Class clazz,
String[] getterNames,
String[] setterNames,
Class[] types)
Retrieve the ReflectionOptimizer delegate for this provider
capable of generating reflection optimization components.
|
default void |
resetCaches()
Some BytecodeProvider implementations will have classloader specific caching.
|
ProxyFactoryFactory getProxyFactoryFactory()
Retrieve the specific factory for this provider capable of generating run-time proxies for lazy-loading purposes.
ReflectionOptimizer getReflectionOptimizer(Class clazz, String[] getterNames, String[] setterNames, Class[] types)
Retrieve the ReflectionOptimizer delegate for this provider capable of generating reflection optimization components.
clazz
- The class to be reflected upon.getterNames
- Names of all property getters to be accessed via reflection.setterNames
- Names of all property setters to be accessed via reflection.types
- The types of all properties to be accessed.Enhancer getEnhancer(EnhancementContext enhancementContext)
Returns a byte code enhancer that implements the enhancements described in the supplied enhancement context.
enhancementContext
- The enhancement context that describes the enhancements to apply.default void resetCaches()
Some BytecodeProvider implementations will have classloader specific caching. These caches are useful at runtime but need to be reset at least on SessionFactory shutdown to prevent leaking the deployment classloader. Since the BytecodeProvider is static these caches are potentially shared across multiple deployments; in this case we’ll clear all caches which might show as a small, temporary performance degradation on the SessionFactory instances which haven’t been closed. This limitation will be removed in the future, when these providers will no longer be static.
Copyright © 2001-2018 Red Hat, Inc. All Rights Reserved.