Introduction à NHibernate
Les fonctions avancées de NHibernate
L'héritage
Pour l’héritage, nous avons 3 solutions :
- Table per class hierarchy : utilisation de la balise <subclass> dans le mapping
Une classe par type d’entité mais une seule et même table dans la base de données. Un champ discriminant dans la table.
- Table per subclass : utilisation de la balise <joined-subclass> dans le mapping
Autant de tables que d’entités.
- Table per concrete class : mapping simple
Autant de table que d’entités concrètes, mais rarement utilisé due à sa limitation.
Le lazy-loading
NHibernate propose une fonction afin d'améliorer les performances : c'est le lazy-loading. Cette fonction permet de ne charger les données uniquement lors de leur accès. On gagne ainsi au temps de chargement des données de l'application. On fait également une économie de ressource mémoire et de charge serveur du coté de la base de données.
Pour utiliser cette fonction, il nous suffit juste d'ajouter l'attribut lazy dans le fichier de mapping avec la valeur true ou false.
<property name="Name" column="parkingName" type="String" lazy="true|false" />
le HQL (Hibernate Query Language)
L'utilisation d'un tel outil permet de faire abstraction sur la partie SQL. Cependant, on peut être amené à en avoir besoin. Pour cela, NHibernate propose son propre langage d'interrogation : le HQL.
C'est un langage basé sur le SQL, sauf qu'au lieu de manipuler des champs et des tables, on manipule des objets et des attributs d'objets. Le HQL est un langage de requête totalement orienté objet.