10 Stimmen

Wie verwaltet man NHibernate-Sitzungen in einer langlebigen Windows Forms-Anwendung?

Wir verwenden NHibernate, um unsere Persistenz in einer komplexen modularen Windows Forms-Anwendung zu verwalten - aber ein Gedanke beschäftigt mich immer wieder. Wir öffnen derzeit eine Sitzung beim Start und öffnen alle Objekte durch diese Sitzung. Ich mache mir Sorgen, dass alle geladenen Objekte in den NHibernate-Sitzungscache geladen werden, so dass sie nicht gelöscht werden können, und wir am Ende die gesamte Datenbank im Speicher haben werden.

Das passiert bei Webanwendungen nie, da Webseitenanfragen (und noch besser Ajax-Anfragen) die perfekte kurzlebige Transaktion darstellen, so dass eine Sitzung zur Bearbeitung jeder Anfrage geöffnet und geschlossen werden kann.

Wenn ich jedoch einen Baum von Objekten in meine Formularanwendung lade und sie dann in einen Navigationsbereich auf dem Bildschirm einfüge, können sie für die Dauer der Anwendung dort verbleiben - und zu jedem Zeitpunkt kann der Benutzer auf sie klicken, was dazu führt, dass unser Code die Objektbeziehungen zu anderen Objekten navigieren muss (was nur innerhalb einer NHibernate-Sitzung funktioniert).

Was können StackOverflow-Leser tun, um die Vorteile von NHibernate ohne die von mir beschriebenen Probleme zu erhalten?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X