I'd like some feedback on a possible contribution: an interceptor that
classifies entities as transient or dirty.

NHibernate already classifies entities using unsaved-value, but that
doesn't work so well with natural keys, where the key value is
meaningful/significant even before the entity has been stored for the
first time. It seems common to write a small method to wrap the
NHibernate primitives in order to explicitly insert or update at the
right times.

Usually, though, I want newly instantiated objects to transient and
objects that NHibernate has seen before to be considered persistent.
Rather than adorning each entity with a boolean flag plus code to
maintain that flag and invoke the appropriate NH primitive when I want
to write the entity to the database, I wrote an interceptor.

The interceptor maps entities to booleans and advises NH about the
transient/persistent status at the appropriate times. It uses weak
references to avoid prolonging the GC-lifetimes of entities.

I'm expecting that some NH expert will be horrified by my general idea
here. I'm an NH neophyte so it seems likely that someone will point
out something I've overlooked. On the other hand, it seems that NH
culture is pretty dismissive of natural keys; maybe what's been
overlooked (out of a lack of interest) is support for the use of
natural keys in NH. I'm posting here so that either I'll learn
something about NH, or NH will get stronger as a result of my
contribution.

So, what do you think?

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"NHibernate Contrib - Development Group" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com.ar/group/nhcdevs?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to