hibernate-orm/design/type-system-domain.adoc

54 lines
1.6 KiB
Plaintext

= Domain type system (JPA/SQM)
The JPA type system is an "unmapped" model, meaning that it has no mapping information -
no references to tables, columns, etc. The base contract for Hibernate's extension to the
JPA model is `org.hibernate.metamodel.model.domain.DomainType`.
Hibernate's Semantic Query Model (SQM) is defined in terms of these JPA type extensions,
through the `SqmExpressible` contract, allowing parts of the application's
domain model to be used as part of an SQM tree.
[plantuml,SqmTypeSystem,png]
.Domain type system
....
@startuml
skinparam handwritten true
interface DomainType
interface SimpleDomainType
interface BasicDomainType
interface AnyMappingDomainType
interface ManagedDomainType
interface EmbeddableDomainType
interface IdentifiableDomainType
interface EntityDomainType
interface MappedSuperclassDomainType
interface SqmExpressible
interface SqmPathSource
interface PersistentAttribute
interface SingularPersistentAttribute
interface PluralPersistentAttribute
DomainType <|-- SimpleDomainType
SimpleDomainType <|-- BasicDomainType
SimpleDomainType <|-- AnyMappingDomainType
SimpleDomainType <|-- ManagedDomainType
ManagedDomainType <|-- EmbeddableDomainType
ManagedDomainType <|-- IdentifiableDomainType
IdentifiableDomainType <|-- MappedSuperclassDomainType
IdentifiableDomainType <|-- EntityDomainType
SqmExpressible <|-- DomainType
SqmExpressible <|-- SqmPathSource
SqmPathSource <|-- EntityDomainType
SqmPathSource <|-- PersistentAttribute
PersistentAttribute <|-- SingularPersistentAttribute
PersistentAttribute <|-- PluralPersistentAttribute
@enduml
....