NHibernate für C# (.NET): Vollständiges Tutorial mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist NHibernate und warum wird es benötigt?

NHibernate ist eine leistungsstarke und ausgereifte objektrelationale Bibliothek (ORM) für die .NET-Plattform, geschrieben in C#. Sie ist ein Port der berühmten Java-Bibliothek Hibernate. NHibernate löst das grundlegende Problem der Diskrepanz zwischen dem objektorientierten Datenmodell in Ihrer C#-Anwendung und dem relationalen Datenmodell in der Datenbank (SQL Server, PostgreSQL, MySQL, Oracle usw.).

Die Hauptaufgabe von NHibernate ist es, die Datenkonvertierung zwischen C#-Objekten (POCO – Plain Old CLR Objects) und Datenbanktabelleneinträgen zu automatisieren. Anstatt hunderte Zeilen ähnlichen SQL-Codes für CRUD-Operationen (Create, Read, Update, Delete) zu schreiben, arbeiten Sie mit Objekten, während NHibernate die Generierung und Ausführung von SQL-Abfragen übernimmt.

Warum NHibernate verwenden?

  • Höhere Entwicklungsproduktivität: Sie schreiben weniger Code, insbesondere Boilerplate-Code für ADO.NET.
  • Weniger Fehler: SQL-Abfragen werden automatisch generiert, was das Risiko von Syntaxfehlern und SQL-Injection (bei korrekter Verwendung) reduziert.
  • Datenbankunabhängigkeit: Sie können das DBMS wechseln, indem Sie nur die Verbindungszeichenfolge und den NHibernate-Dialekt ändern, ohne die Geschäftslogik umschreiben zu müssen.
  • Cache-Verwaltung: Integrierte Mechanismen für First-Level- und Second-Level-Caching beschleunigen die Anwendungsleistung erheblich.
  • Lazy Loading (Verzögertes Laden): Verknüpfte Daten werden nur geladen, wenn sie tatsächlich benötigt werden, was Ressourcen spart.
  • Leistungsstarke Abfragesprache: HQL (Hibernate Query Language) und LINQ to NHibernate ermöglichen typsichere Abfragen.

NHibernate Installation

NHibernate wird über NuGet, den Paketmanager für .NET, verteilt. Die Installation ist sehr einfach.

Über die Paket-Manager-Konsole (Package Manager Console):

Install-Package NHibernate

Über die .NET CLI (für .NET Core / .NET 5+ Projekte):

dotnet add package NHibernate

Zusätzliche Pakete (bei Bedarf):

  • NHibernate.Caches.CoreMemoryCache – für Second-Level-Caching.
  • System.Data.SqlClient oder Microsoft.Data.SqlClient – für die Arbeit mit SQL Server.
  • Npgsql – für die Arbeit mit PostgreSQL.
  • MySql.Data – für die Arbeit mit MySQL.

Nach der Installation müssen Sie die Konfiguration einrichten (normalerweise in app.config, web.config oder appsettings.json) oder per Fluent-Konfiguration im Code.

Schnellstart mit Codebeispiel

Betrachten wir ein einfaches Beispiel für die Arbeit mit NHibernate. Angenommen, wir haben eine Tabelle Products in einer SQL Server-Datenbank.

1. Erstellen der Entitätsklasse (Entity):

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

Wichtig: Alle Eigenschaften müssen virtual sein – dies ist eine Anforderung von NHibernate für die Implementierung von Proxy-Mechanismen (Lazy Loading, Änderungsverfolgung).

2. Erstellen der Mapping-Datei (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                    

Empfehlungen