hibernate-orm/design/6-type-system-new-old.adoc

47 lines
990 B
Plaintext

= Type System
The Hibernate "type system" is multi-layered....
== JavaTypeDescriptor
At the lowest level we have `JavaTypeDescriptor` which describes very rudimentary information about
Java types (`Class`). This level makes no distinctions based about the nature of the type. E.g.
it does not understand that `Person` is an entity.
== JPA type system (SQM)
[plantuml,SqmTypeSystem,png]
.SqmTypeSystem
....
@startuml
skinparam handwritten true
interface SqmExpressable
interface SqmPathSource
interface EntityDomainType
interface BasicDomainType
interface PeristentAttribute
interface SingularePersistentAttribute
interface PluralPersistentAttribute
SqmExpressable <|-- SqmPathSource
SqmExpressable <|-- BasicDomainType
SqmPathSource <|-- EntityDomainType
SqmPathSource <|-- PeristentAttribute
PeristentAttribute <|-- SingularePersistentAttribute
PeristentAttribute <|-- PluralPersistentAttribute
@enduml
....
== Mapping model
- persisters, etc...
todo : document this one