Il existe deux types de classes dans NHibernate :
NHibernate utilise fichiers de correspondances XML pour définir les correspondances des métadonnées. Chaque fichier de correspondance peut contenir les métadonnées d'une ou de plusieurs classes. PowerAMC utilise les stratégies de regroupement suivantes :
Un fichier de correspondances distinct est généré pour chaque classe d'entité qui n'est pas une hiérarchie d'héritage.
Un fichier de correspondances distinct est généré pour chaque hiérarchie d'héritages dotée d'une stratégie de correspondance unique. Toutes les correspondances des sous-classes sont définies dans le fichier de correspondance. Le fichier de correspondance est généré pour la classe racine de la hiérarchie.
Aucun fichier de correspondance n'est généré pour une classe de type valeur unique qui n'appartient pas à une hiérarchie d'héritage. Sa correspondance est définie dans le fichier de correspondance de son propriétaire.
Les classes peuvent être mises en correspondances avec des tables ou des vues. Les vues ayant de nombreuses contraintes et des fonctionnalités limitées (par exemple, elles n'ont ni clé primaire ni clés de référence), certaines vues ne peuvent pas être mises à jour, et les correspondances peuvent ne pas fonctionner correctement dans certains cas.
Certaines conditions doivent être remplies pour pouvoir générer une correspondance pour une table particulière :
La source peut être générée. Cela n'est pas possible par exemple lorsque la visibilité de la classe est private.
La classe est persistante.
Le mode de génération n'est pas défini à Générer un type de données abstrait et Type de valeur.
Si la classe est une classe interne, elle doit être statique et avoir une visibilité public. NHibernate doit alors être en mesure de créer des instances de la classe.
Les options de correspondance de classe spécifiques à NHibernate sont définies dans l'onglet NHibernate de la feuille de propriétés d'une classe :
Option |
Description |
---|---|
Insertion dynamique |
Spécifie qu'une instruction INSERT SQL doit être générée lors de l'exécution et contiendra uniquement les colonnes dont les valeurs ne sont pas nulles. Balise Hibernate : dynamic-insert |
Modification dynamique |
Spécifie qu'une instruction UPDATE SQL doit être générée lors de l'exécution et contiendra uniquement les colonnes dont les valeurs ont été modifiées. Balise Hibernate : dynamic-update |
Sélection avant modification |
Spécifie que Hibernate ne doit jamais procéder à un SQL UPDATE à moins d'être certain qu'un objet soit effectivement modifié. Balise Hibernate : select-before-update |
Type de cascade par défaut |
Spécifie le style de cascade par défaut. Balise Hibernate : default-cascade |
Type d'accès par défaut |
Spécifie le type d'accès par défaut (champ ou propriété) Balise Hibernate : default-access |
Nom de proxy |
Spécifie une interface à utiliser pour l'initialisation de proxy à la demande. Balise Hibernate : proxy |
Taille de lot |
Spécifie une "taille de lot" pour la récupération des instances de cette classe par identifiant. Balise Hibernate : batch-size |
Vérification |
Spécifie une expression SQL utilisée pour générer une contrainte de vérification multiligne pour la génération automatique de schéma. Balise Hibernate : check |
Polymorphisme |
Spécifie si un polymorphisme de requête implicite ou explicite est utilisé. Balise Hibernate : polymorphism |
Nom du schéma |
Spécifie le nom du schéma de base de données. Balise Hibernate : schema |
Nom de catalogue |
Spécifie le nom du catalogue de base de données. Balise Hibernate : catalog |
ID de ligne |
Spécifie que Hibernate peut utiliser la colonne ROWID sur les bases de données qui la prennent en charge (par exemple, Oracle). Balise Hibernate : rowed |
Nom de classe persistante |
Spécifie une classe de persistance personnalisée. Balise Hibernate : persister |
A la demande |
Spécifie que la classe doit être à la demande. Balise Hibernate : lazy |
Modifiable |
Spécifie que les instances de la classe sont modifiables. Balise Hibernate : mutable |
Classe abstraite |
Spécifie que la classe est abstraite. Balise Hibernate : abstract |
Importation automatique |
Spécifie qu'un nom de classe non qualifié peut être utilisé dans une requête. Balise Hibernate : Auto-import |
Colonne discriminante |
Spécifie la colonne ou formule discriminante pour le comportement polymorphique dans une table par stratégie de correspondance hiérarchique. Balise Hibernate : discriminator |
Valeur discriminante |
Spécifie une valeur qui distingue les sous-classes individuelles, qui sont utilisées pour un comportement polymorphique. Balise Hibernate : discriminator-value |
Type discriminant |
Spécifie le type discriminant. Balise Hibernate : type |
Forcer Hibernate à utiliser un discriminant |
Force Hibernate à spécifier des valeurs discriminantes admises et ce, même lors de l'extraction de toutes les instances de la classe racine. Balise Hibernate : force |
Ne pas utiliser de discriminant dans insert |
Force Hibernate à ne pas inclure la colonne dans les SQL INSERT Balise Hibernate : insert |
Type de verrouillage optimiste |
Spécifie une stratégie de verrouillage optimiste. Balise Hibernate : optimistic-lock |
Nom de colonne (de verrouillage optimiste) |
Spécifie la colonne pour le verrouillage optimiste. Un champ est également généré si cette option est définie. Balise Hibernate : version/ timestamp |
Valeur non enregistrée (de verrouillage optimiste) |
Spécifie si une valeur non enregistrée est nulle ou indéfinie. Balise Hibernate : unsaved-value |