Was ist Castle Proxy-Fabrik in NHibernate?

8

Was ist Castle Proxy-Fabrik in NHibernate? Was ist seine Aufgabe? Was bedeutet Proxy in diesem Fall?

    
masoud ramezani 20.04.2010, 07:15
quelle

3 Antworten

11

Castle kann verwendet werden (unter anderem haben Sie die Wahl, Sie können auch LinFu, Spring.NET, ...) verwenden, um dynamische Proxies Ihrer Entitäten zu erstellen.

Standardmäßig verwendet NHibernate dynamische Proxys zur Darstellung Ihrer Entitäten. Auf diese Weise kann ein Objekt an Sie zurückgegeben werden, wenn Sie eine Entität aus der DB abrufen, ohne dass alle Eigenschaften aufgefüllt sind. Wenn Sie einen dynamischen Proxy verwenden, wird die Entität nur dann gefüllt, wenn Sie wirklich auf eine Eigenschaft verweisen.
(Es handelt sich also um eine Art faules Laden; nicht zu verwechseln mit dem langsamen Laden von Sammlungen / Assoziationen).

Dieses Verhalten ist der Grund, warum NHibernate möchte, dass Sie jede Eigenschaft standardmäßig als virtuell erstellen: NHibernate erstellt eine neue Klasse, die diesen Castle (oder LinFu, ...) Proxy-Provider verwendet, der von Ihrer Entität erbt und diese überschreibt alle Eigenschaften, damit es den Code "injizieren" kann, der notwendig ist, um die notwendigen Daten aus der Datenbank abzurufen.

Sie können dieses Verhalten deaktivieren, indem Sie in Ihrer Entitätszuordnung 'lazy = false' angeben. (Obwohl ich annehme, dass NHibernate auch dann, wenn Sie diese Funktion deaktivieren, immer noch die Verwendung eines der Proxy-Factorys erfordert).

    
Frederik Gheysels 20.04.2010, 07:24
quelle
3

Wenn Sie eine Entität aus ISession auswählen, erhalten Sie keine echte Entitätsinstanz - Sie erhalten ein Proxy-Objekt. Dieses Proxy-Objekt übernimmt Ihre Entität und wird von NHibernate verwendet, um Änderungen an den Feldern zu verfolgen.

    
Sly 20.04.2010 07:22
quelle
3

seht es: Ссылка

    
Afshar Mohebbi 20.04.2010 07:37
quelle

Tags und Links