NHibernate - Architektura
W dzisiejszych czasach wiele systemów jest projektowanych z architekturą warstwową, NHibernate również ją ma i doskonale współpracuje z tym projektem.
Architektura warstwowa
Architektura warstwowa dzieli system na kilka grup, z których każda zawiera kod odnoszący się do konkretnego obszaru problemowego i te grupy nazywane są warstwami. Większość aplikacji na poziomie przedsiębiorstwa używahigh-level application architecture które składają się z trzech warstw -
- Warstwa prezentacji
- Warstwa biznesowa
- Warstwa trwałości
 
                Na przykład warstwa interfejsu użytkownika, znana również jako warstwa prezentacji, może zawierać cały kod aplikacji do tworzenia stron internetowych i przetwarzania danych wejściowych użytkownika.
Jedną z głównych zalet podejścia warstwowego jest to, że często można wprowadzać zmiany w jednej warstwie bez znaczących zakłóceń w innych warstwach, dzięki czemu systemy lesser fragile and more maintainable.
Warstwa prezentacji
- Jest to najwyższa warstwa, która zawiera kod odpowiedzialny za rysowanie interfejsu użytkownika, stron, okien dialogowych lub ekranów oraz zbieranie danych wejściowych użytkownika i sterowanie nawigacją. 
Warstwa biznesowa
- Warstwa biznesowa jest odpowiedzialna za wdrażanie wszelkich reguł biznesowych lub wymagań systemowych, które użytkownicy zrozumieliby jako część domeny problemu. 
- Wykorzystuje również ponownie model zdefiniowany przez warstwę trwałości. 
Warstwa trwałości
- Warstwa trwałości składa się z klas i komponentów, które są odpowiedzialne za zapisywanie i pobieranie danych aplikacji. 
- Ta warstwa definiuje również mapowanie między klasą modelu a bazą danych. W tej warstwie stosowany jest przede wszystkim NHibernate. 
Baza danych
- Baza danych istnieje poza aplikacją .NET.
- To rzeczywista, trwała reprezentacja stanu systemu.
- Jeśli używana jest baza danych SQL, zawiera ona schemat relacyjny i prawdopodobnie procedury składowane.
Klasy pomocnicze / użytkowe
- Każda aplikacja ma zestaw klas pomocniczych lub narzędziowych, które obsługują inne warstwy: na przykład widżety interfejsu użytkownika, klasy wiadomości, klasy wyjątków i narzędzia do logowania. 
- Te elementy nie są uważane za warstwy, ponieważ nie są zgodne z regułami zależności międzywarstwowych w architekturze warstwowej. 
Architektura NHibernate
- Jest to widok wysokiego poziomu aplikacji NHibernate, ale można również zobaczyć prostą architekturę NHibernate. 
 
                - Kod aplikacji wykorzystuje NHibernate ISession i IQuery API do operacji trwałych i tylko do zarządzania transakcjami bazy danych, najlepiej przy użyciu NHibernate ITransaction API.