# hibernate-models **Repository Path**: quuuso/hibernate-models ## Basic Information - **Project Name**: hibernate-models - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: dynamic-types - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-22 - **Last Updated**: 2025-06-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README :fn-managed: footnote:[The application's domain and related classes] == Hibernate models Uses a mix of https://smallrye.io/jandex/[Jandex] and Java reflection to build the de-typed abstraction model of classes and annotations referenced by an application's managed resources{fn-managed}. Consumers can then access details from that abstraction model in a unified way, regardless of the underlying source. For classes which we are able to access from a Jandex index, this has the benefit that the classes are not loaded into the ClassLoader which is important because once a classes is loaded into a ClassLoader, its bytecode cannot be changed and run-time bytecode enhancement is not possible. This work is intended to replace the https://github.com/hibernate/hibernate-commons-annotations[`hibernate-commons-annotation`] (HCANN) library, which suffered from a number of shortcomings. === Annotations 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 === Model 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