Logo UGIdotNET

Proprietà lazy con NHibernate 3

NHibernate 3 è in grado di supportare il lazy load anche delle proprietà scalari; questa funzionalità può essere utile nei casi nei quali il caricamento della colonna corrispondente sia oneroso (es: colonne binarie/image, text/clob, ...).

Per sfruttare questa funzionalità è sufficiente utilizzare opportunamente l'attributo lazy nel mapping; ipotizzando di voler rendere lazy la proprietà Notes della "classica" entità "Employee" ottenuta mappando il database Northwind, sarà sufficiente inserire il seguente snippet nel mapping della suddetta entità:

  <property name="Notes" type="StringClob" lazy="true" />

Non esiste limitazione al numero di proprietà definibili come "lazy" in una entità, ma è importante sapere che NHibernate 3 caricherà contestualmente tutte le proprietà scalari "lazy" di un oggetto al momento del primo accesso in lettura ad una qualunque di esse.

Si noti, infine, che questa funzionalità è disponibile esclusivamente utilizzando la factory dei proxy basata su Castle, come specificato nella seguente configurazione (da inserirsi nel blocco <hibernate-configuration /> del file di configurazione):

  <property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>

Technorati tags: 
Autore: Andrea Saltarello
Data: 28 dicembre 2010
Ultimo aggiornamento: 28 dicembre 2010
Categorie:  Data Access
Tag:  NHibernate O/RM

© 2001 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali. - Partita IVA 01927050185