= Mapping model The mapping model encompasses the complete mapping of objects to/from database. It is the model used to drive read and write operations. [NOTE] ---- As of 6.0, only read operations are implemented to use this mapping model. Future versions will hopefully move writing to use this mapping model as well ---- [plantuml,MasppingTypeSystem,png] .Mapping type model (org.hibernate.metamodel.mapping) .... @startuml skinparam handwritten true interface MappingType interface ManagedMappingType interface MappingModelExpressable interface ValueMapping interface BasicType interface ModelPart interface ModelPartContainer MappingType <|-- BasicType MappingType <|-- JdbcMapping MappingType <|-- ManagedMappingType MappingType <|-- CollectionMappingType ManagedMappingType <|-- EmbeddableMappingType ManagedMappingType <|-- EntityMappingType MappingModelExpressable <|-- ValueMapping MappingModelExpressable <|-- ModelPart ValueMapping <|-- BasicType ModelPart <|-- BasicValuedModelPart ModelPart <|-- EmbeddableValuedModelPart ModelPart <|-- EntityValuedModelPart ModelPart <|-- AttributeMapping ModelPart <|-- EntityIdentifierMapping ModelPart <|-- EntityVersionMapping ModelPart <|-- EntityDiscriminatorMapping ModelPart <|-- CollectionPart ModelPartContainer <|-- EntityMappingType ModelPartContainer <|-- EmbeddableMappingType @enduml .... == Relationship with legacy "persister walking" SPI `org.hibernate.metamodel.model.mapping` contract corollaries in `org.hibernate.persister.walking`: EntityMapping::EntityDefinition EmbeddableMapping::CompositionDefinition AttributeMapping::AttributeDefinition EntityIdentifierMapping::EntityIdentifierDefinition == AllowableParameterType `BindableType` is a contract that defines types that are valid for parameter binding in terms of an SQM query. AT some point this needs to be "resolved" to a ValueMapping/Type/Bindable when generating the SQL AST and executing. One option is to have the `BindableType` be resolved first to a `SqmExpressable` `SqmExpressableAllowableParameterType#resolveSqmExpressable`