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 @ Wednesday, September 20, 2006 12:59 AM | 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 @ Monday, September 4, 2006 12:39 AM | 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 @ Thursday, August 24, 2006 2:12 AM | 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 @ Monday, August 21, 2006 1:17 AM | Feedback (0) |

Powered by:
Powered By Subtext Powered By ASP.NET