NHibernate C# (.NET) : guide complet avec exemples pratiques

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Qu'est-ce que NHibernate et pourquoi l'utiliser ?

NHibernate est une bibliothèque de mapping objet-relationnel (ORM) puissante et mature pour la plateforme .NET, écrite en C#. Il s'agit d'un portage de la célèbre bibliothèque Java Hibernate. NHibernate résout le problème fondamental de décalage entre le modèle de données orienté objet de votre application C# et le modèle relationnel de votre base de données (SQL Server, PostgreSQL, MySQL, Oracle, etc.).

L'objectif principal de NHibernate est d'automatiser la conversion des données entre les objets C# (POCO — Plain Old CLR Objects) et les enregistrements des tables de la base de données. Au lieu d'écrire des centaines de lignes de code SQL redondant pour les opérations CRUD (Create, Read, Update, Delete), vous travaillez avec des objets, et NHibernate se charge de générer et d'exécuter les requêtes SQL.

Pourquoi utiliser NHibernate ?

  • Productivité accrue : Vous écrivez moins de code, notamment le code passe-partout lié à ADO.NET.
  • Réduction des erreurs : Les requêtes SQL sont générées automatiquement, ce qui réduit les risques d'erreurs de syntaxe et d'injections SQL (si utilisé correctement).
  • Indépendance vis-à-vis de la base de données : Vous pouvez changer de SGBD en modifiant simplement la chaîne de connexion et le dialecte NHibernate, sans réécrire la logique métier.
  • Gestion du cache : Les mécanismes de cache de premier et second niveau intégrés accélèrent considérablement les performances de l'application.
  • Chargement différé (Lazy Loading) : Les données associées ne sont chargées que lorsque cela est nécessaire, ce qui économise les ressources.
  • Langage de requêtes puissant : HQL (Hibernate Query Language) et LINQ to NHibernate permettent d'écrire des requêtes typées et sécurisées.

Installation de NHibernate

NHibernate est distribué via NuGet, le gestionnaire de paquets .NET. L'installation est très simple.

Via la console du gestionnaire de paquets (Package Manager Console) :

Install-Package NHibernate

Via .NET CLI (pour les projets .NET Core / .NET 5+) :

dotnet add package NHibernate

Paquets supplémentaires (si nécessaire) :

  • NHibernate.Caches.CoreMemoryCache — pour le cache de second niveau.
  • System.Data.SqlClient ou Microsoft.Data.SqlClient — pour SQL Server.
  • Npgsql — pour PostgreSQL.
  • MySql.Data — pour MySQL.

Après l'installation, vous devrez configurer NHibernate (généralement dans les fichiers app.config, web.config ou appsettings.json) ou via une configuration Fluent en code.

Démarrage rapide avec un exemple de code

Prenons un exemple simple avec NHibernate. Imaginons une table Products dans une base de données SQL Server.

1. Création de la classe d'entité (Entity) :

public class Product
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual decimal Price { get; set; }
}

Important : Toutes les propriétés doivent être virtual — c'est une exigence de NHibernate pour implémenter les mécanismes de proxy (chargement différé, suivi des modifications).

2. Création du fichier de mapping (Product.hbm.xml) :

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="YourAssemblyName"
                   namespace="YourNamespace">
    <class name="Product" table="Products">
        <id name="Id" column="ProductId">
            <generator class="native" />
        </id>
        <property name="Name" column="ProductName" length="100" not-null="true" />
        <p                    

Recommendations