Crad's .NET Blog

L'UGIblog di Marco De Sanctis
posts - 190, comments - 457, trackbacks - 70

NHibernate

[NHibernate] Mapping di un composite-id

Alle volte (anzi, molto spesso) nel realizzare la nostra applicazione non abbiamo tutta la libertà di questo mondo, magari perché lo schema DB ci viene "imposto" da un'altra figura professionale. In questi casi non è raro trovarsi ad avere a che fare con chiavi primarie composte, che si estendono cioé su più colonne. Con NHibernate possiamo gestire egregiamente anche situazioni di questo tipo, anche se è bene sottolineare che le cose si complicano un pochino quindi, nel caso in cui si debba partire da zero, è sempre meglio utilizzare la solita surrogate key, semplice, invariante e priva di significato. Bene, supponiamo di avere...

posted @ mercoledì 20 settembre 2006 01:59 | Feedback (7) |

[NHibernate] IInterceptor per personalizzare il comportamento della Session

Nonostante l'oggetto Session sia privo di eventi, NHibernate offre comunque un supporto a chi voglia realizzare dei metodi di Callback implementando il pattern Observer tramite un oggetto particolare denominato Interceptor. Esso non è altro che una classe che implementa l'interfaccia IInterceptor, la quale espone alcuni metodi che vengono richiamati dalla Session in corrispondenza delle operazioni di Load, Save, Flush, ecc... L'associazione di un Interceptor ad una Session avviene all'atto della sua creazione, tramite un particolare overload del metodo SessionFactory.CreateSession : ISession mySession = SessionFactory.CreateSession(myInterceptor); Come potrete immaginare, un oggetto del...

posted @ lunedì 4 settembre 2006 01:39 | Feedback (6) |

[NHibernate] Inheritance mapping

Ereditarietà e polimorfismo sono due caratteristiche della programmazione OO estremamente potenti, che possono essere sfruttate anche nella costruzione di domini complessi. La persistenza su un DBMS di queste strutture, però, pone dei problemi, in quanto non sono direttamente mappabili su un modello ER. Supponiamo di dover persistere su DBMS il seguente dominio: Come realizzare lo schema del DB? Beh, una trattazione completa dell'argomento è decisamente eccessiva, per cui si rimanda ad altre fonti, a noi basta semplicemente sapere che le scelte più usate ricadono tra: Table per class hierarchy, in cui una sola tabella contiene una colonna per ogni ...

posted @ giovedì 24 agosto 2006 03:12 | Feedback (8) |

[NHibernate] LazyLoad delle entities

Il pattern LazyLoad è quasi sempre utilizzato in NHibernate per il caricamento delle collection di childs in una relazione Master/Detail. Non tutti sanno invece che è possibile applicare questo pattern a tutti i tipi di relazioni, potendo così ottimizzare di molto la dimensione delle query che vengono effettuate su DB e la mole di dati che viene recuperata. Capita spesso di avere classi con parecchie relazioni Many-To-One, vuoi perché si tratta di classi "dettaglio" di qualcosa, vuoi perché se creo la classe Articolo magari questa espone una proprietà Tipo di...

posted @ lunedì 21 agosto 2006 02:17 | Feedback (0) |

Powered by:
Powered By Subtext Powered By ASP.NET