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-annotationlibrary, 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 AnnotationDescriptorreferences
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 ClassDetailsreferences
- 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).