Provides support for dealing with an application’s managed resources[1] as a de-typed abstraction model backed by one or more sources. Consumers can then access details from that abstraction model in a unified way, regardless of the underlying source.
Note
|
This work replaces the hibernate-commons-annotation library, which suffered from a number of shortcomings.
|
The modeling of annotations in hibernate-models is defined by a few main actors:
- AnnotationDescriptor
-
Extended information about an annotation class
- AnnotationTarget
-
Something (Class, Method, …) where an annotation can be used
- AnnotationUsage
-
Specific usage of an annotation on a target
- AttributeDescriptor
-
Details about an annotation attribute, including it’s
ValueTypeDescriptor
- ValueTypeDescriptor
-
Describes an allowable type for annotation attributes - ints, enums, etc. Provides the capability to manipulate these values (create them, wrap them, unwrap them, etc).
- AnnotationDescriptorRegistry
-
registry of
AnnotationDescriptor
references
These mostly model Java constructs such as Class, Method, etc. but adds the capability for these to be dynamic models (no physical Class).
- ClassDetails
-
Think
java.lang.Class
- TypeDetails
-
Think
java.lang.reflect.Type
- MemberDetails
-
Think
java.lang.reflect.Member
- FieldDetails
-
Think
java.lang.reflect.Field
- MethodDetails
-
Think
java.lang.reflect.Method
- RecordComponentDetails
-
Think
java.lang.reflect.RecordComponent
- ClassDetailsRegistry
-
registry of
ClassDetails
references
- hibernate-models
-
The base support, using Java reflection as the backing source.
- hibernate-models-jandex
-
Optional support for using Jandex as the backing source. Using definitions from a Jandex index has the benefit that the classes are not loaded into the ClassLoader which can be important in a few scenarios (e.g. retain the ability to enhance a class’s bytecode).