Interface EnhancementContext
-
- All Known Implementing Classes:
DefaultEnhancementContext,EnhancementContextWrapper,EnhancerTestContext
public interface EnhancementContextThe context for performing an enhancement. Enhancement can happen in any number of ways:- Build time, via Ant
- Build time, via Maven
- Build time, via Gradle
- Runtime, via agent
- Runtime, via JPA constructs
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description booleandoBiDirectionalAssociationManagement(UnloadedField field)Should we manage association of bi-directional persistent attributes for this field?booleandoDirtyCheckingInline(UnloadedClass classDescriptor)Should we in-line dirty checking for persistent attributes for this class?booleandoExtendedEnhancement(UnloadedClass classDescriptor)Should we enhance field access to entities from this class?ClassLoadergetLoadingClassLoader()Obtain access to the ClassLoader that can be used to load Class references.booleanhasLazyLoadableAttributes(UnloadedClass classDescriptor)Does the given class define any lazy loadable attributes?booleanisCompositeClass(UnloadedClass classDescriptor)Does the given class name represent an embeddable/component class?booleanisEntityClass(UnloadedClass classDescriptor)Does the given class descriptor represent an entity class?booleanisLazyLoadable(UnloadedField field)Determine if a field is lazy loadable.booleanisMappedCollection(UnloadedField field)booleanisMappedSuperclassClass(UnloadedClass classDescriptor)Does the given class name represent a MappedSuperclass class?booleanisPersistentField(UnloadedField ctField)Does the field represent persistent state? Persistent fields will be "enhanced".UnloadedField[]order(UnloadedField[] persistentFields)For fields which are persistent (according toisPersistentField(org.hibernate.bytecode.enhance.spi.UnloadedField)), determine the corresponding ordering maintained within the Hibernate metamodel.
-
-
-
Method Detail
-
getLoadingClassLoader
ClassLoader getLoadingClassLoader()
Obtain access to the ClassLoader that can be used to load Class references. In JPA SPI terms, this should be a "temporary class loader" as defined byPersistenceUnitInfo.getNewTempClassLoader()- Returns:
- The class loader that the enhancer can use.
-
isEntityClass
boolean isEntityClass(UnloadedClass classDescriptor)
Does the given class descriptor represent an entity class?- Parameters:
classDescriptor- The descriptor of the class to check.- Returns:
trueif the class is an entity;falseotherwise.
-
isCompositeClass
boolean isCompositeClass(UnloadedClass classDescriptor)
Does the given class name represent an embeddable/component class?- Parameters:
classDescriptor- The descriptor of the class to check.- Returns:
trueif the class is an embeddable/component;falseotherwise.
-
isMappedSuperclassClass
boolean isMappedSuperclassClass(UnloadedClass classDescriptor)
Does the given class name represent a MappedSuperclass class?- Parameters:
classDescriptor- The descriptor of the class to check.- Returns:
trueif the class is a mapped super class;falseotherwise.
-
doBiDirectionalAssociationManagement
boolean doBiDirectionalAssociationManagement(UnloadedField field)
Should we manage association of bi-directional persistent attributes for this field?- Parameters:
field- The field to check.- Returns:
trueindicates that the field is enhanced so that for bi-directional persistent fields the association is managed, i.e. the associations are automatically set;falseindicates that the management is handled by the user.
-
doDirtyCheckingInline
boolean doDirtyCheckingInline(UnloadedClass classDescriptor)
Should we in-line dirty checking for persistent attributes for this class?- Parameters:
classDescriptor- The descriptor of the class to check.- Returns:
trueindicates that dirty checking should be in-lined within the entity;falseindicates it should not. In-lined is more easily serializable and probably more performant.
-
doExtendedEnhancement
boolean doExtendedEnhancement(UnloadedClass classDescriptor)
Should we enhance field access to entities from this class?- Parameters:
classDescriptor- The descriptor of the class to check.- Returns:
trueindicates that any direct access to fields of entities should be routed to the enhanced getter / setter method.
-
hasLazyLoadableAttributes
boolean hasLazyLoadableAttributes(UnloadedClass classDescriptor)
Does the given class define any lazy loadable attributes?- Parameters:
classDescriptor- The class to check- Returns:
- true/false
-
isPersistentField
boolean isPersistentField(UnloadedField ctField)
Does the field represent persistent state? Persistent fields will be "enhanced". may be better to perform basic checks in the caller (non-static, etc) and call out with just the Class name and field name...- Parameters:
ctField- The field reference.- Returns:
trueif the field is ;falseotherwise.
-
order
UnloadedField[] order(UnloadedField[] persistentFields)
For fields which are persistent (according toisPersistentField(org.hibernate.bytecode.enhance.spi.UnloadedField)), determine the corresponding ordering maintained within the Hibernate metamodel.- Parameters:
persistentFields- The persistent field references.- Returns:
- The ordered references.
-
isLazyLoadable
boolean isLazyLoadable(UnloadedField field)
Determine if a field is lazy loadable.- Parameters:
field- The field to check- Returns:
trueif the field is lazy loadable;falseotherwise.
-
isMappedCollection
boolean isMappedCollection(UnloadedField field)
- Parameters:
field- the field to check- Returns:
trueif the field is mapped
-
-