Le paradigme Orienté Objet
En plus de coupler les caractéristiques des graphes et des documents, OrientDB intègre également des concepts orientés objets. En effet on manipule très fréquemment des classes, qui héritent de superclasses, elles même abstraites.
Les classes
Le concept de classe dans OrientDB est ce qui se rapproche le plus d'une table dans une base de donnée relationnelle classique ou d'une collection dans une base document.
C'est une structure qui permet de contrôler le contenu de ses champs.
Elle supporte trois types de schémas :
schema-full, où les champs des classes doivent être renseignés
schema-less, où aucun champ n'est obligatoire dans les classes et aucune structure n'est imposée aux records
schema-hybrid, où l'on peut obliger le renseignement de champs dans les classes mais où les records peuvent avoir des champs personnalisés. Par exemple, on peut avoir une classe User avec des champs nom et âge obligatoires, et une classe UserInformation où l'on stocke les informations complémentaires que l'on souhaite.
L'abstraction
Dans OrientDB, il est également possible de créer des classes abstraites. Ces tables servent généralement à la conception d'une hiérarchie de classe. Elles ne peuvent pas contenir de records.
Héritage et polymorphisme
Une sous-classe hérite de toutes les propriétés de sa super-classe.
Le polymorphisme est activé par défaut dans les requêtes. Dans l'exemple ci-dessous la requête retournera toutes les instances des classes Account et Company dont le nom est 'Google'
Exemple :
CREATE Class Account
CREATE Property Account.name String
CREATE Class Company extends Account
SELECT FROM Account WHERE name.toUpperCase() = 'Google'