Actually I would love to know who is selling that point. I think it is more of a misconception than a selling point. It is naive to expect any tool to be able to convert/adapt/map a legacy [anything] without any work. The real selling point is that NHibernate is flexible enough to accomplish such legacy migrations with probably the least amount of effort on both sides.
-Carlos Practice makes perfect, but if no one is perfect, why practice? > Date: Tue, 27 Apr 2010 11:03:23 -0700 > Subject: [nhibernate-development] Re: shouldDelayIdentityInserts always false > From: [email protected] > To: [email protected] > > You're right, I havnt tried this on a complex object graph. So maybe > it would break down in different scenarios, I can accept that. > > As far as the need to support legacy db's I think is very real. In my > case there are a lot of reports and things we may not even know about > using this database. The solution of just refactor your database, is > not an option at this point. > > That is one of nh's big selling points that you don't have to > redesign your db to fit the orm. > > On Apr 27, 12:46 pm, Fabio Maulo <[email protected]> wrote: > > What you are seeing is only the first level of your object graph. > > If you want change the NH behavior try to think in something more complex > > not only using an object graph with collection etc. but even using different > > hierarchy-persistent-representation. > > If you don't want to access to DB at each Save and/or if you don't want to > > hit DB for each obj in the graph, when you use Persist, the way to walk is > > pretty easy: > > don't use identity-like strategy for POID. > > > > If for some obscure reasons you want maintain the legacy-db, without > > refactoring it, even if you are writing a completely new application... > > well... you are limiting yourself. > > What you are calling "legacy-db" is part of a "legacy-application", no? > > You are re-implementing the application, right ? > > well... perhaps you should remember that the DB is part of the application. > > > > btw, if you have a proposal or a patch, you can use our JIRA > > (http://jira.nhforge.org/). > > > > On Tue, Apr 27, 2010 at 12:52 PM, Brian Pritchard <[email protected] > > > > > > > > > > > > > wrote: > > > How can I delay insert using save? > > > > > This is confusing to me because save returns the id, persist returns > > > void? > > > > > To me, those method signatures communicate that save ensures the id > > > but persist does not. > > > > > On Apr 27, 11:05 am, Fabio Maulo <[email protected]> wrote: > > > > My real question is another... btw, the Save is the method who can delay > > > the > > > > insert. > > > > Obviously if you use HiLo, Guid, Guid.conb, guid.native, sequence nobody > > > > will insert the record before flush the session. > > > > > > On Tue, Apr 27, 2010 at 11:56 AM, Brian Pritchard < > > > [email protected] > > > > > > > wrote: > > > > > Hi Fabio, > > > > > > > What I'm trying to get at is there is a needed feature of allowing > > > > > transient entities to be associated with the session without going to > > > > > the db imediatly when using generated id's. > > > > > > > You say that the semantics of persist should ensure id's are > > > > > available, but then why do we need it when there is save. > > > > > > > The nh recomended way is to use hilo or guids so in those cases id's > > > > > will be available anyway. But for those with legacy db's I think it > > > > > is understandable that id's aren't there until you flush, if you can > > > > > keep the inserts from going early you would make a lot of people > > > > > happy. > > > > > > > On Apr 27, 9:42 am, Fabio Maulo <[email protected]> wrote: > > > > > > Save mean Save in the UoW. > > > > > > Persist is clear enough. > > > > > > > > On Tue, Apr 27, 2010 at 9:45 AM, Brian Pritchard > > > > > > <[email protected]>wrote: > > > > > > > > > Maybe Persist is bad name for it as it does imply the same thing > > > > > > > as > > > > > > > Save. > > > > > > > > > Still, those using db generated id's need a way to delay inserts > > > until > > > > > > > flush. > > > > > > > > > What if there were a method named Associate or Attach? > > > > > > > > > On Apr 26, 11:59 pm, Fabio Maulo <[email protected]> wrote: > > > > > > > > even if I think it work in the same way using session.Save, the > > > > > semantic > > > > > > > of > > > > > > > > session.Persist should include the immediate availability of ID. > > > > > > > > > > On Mon, Apr 26, 2010 at 9:03 PM, Brian Pritchard > > > > > > > > <[email protected]>wrote: > > > > > > > > > > > Hi, first like to say that I'm brand new to NHibernate and so > > > far > > > > > it's > > > > > > > > > wonderful! > > > > > > > > > > > I'm working with a legacy oracle database that is using > > > > > > > > > trigger > > > > > auto- > > > > > > > > > increment id's. The TriggerIdentityGenerator works great but > > > the > > > > > > > > > problem is calling session.Persist() causes inserts to go the > > > db > > > > > > > > > immediately instead of during flush. > > > > > > > > > > > Looking through the code I found in the > > > AbstractSaveEventListener > > > > > > > > > class in PerformSaveOrReplicate a boolean > > > > > shouldDelayIdentityInserts, > > > > > > > > > that at one point (revision 3005 in case it helps) would allow > > > the > > > > > > > > > insert to be delayed. > > > > > > > > > > > // NH Different behavior (shouldDelayIdentityInserts=false > > > anyway) > > > > > > > > > //bool inTxn = source.ConnectionManager.IsInActiveTransaction; > > > > > > > > > //bool shouldDelayIdentityInserts = !inTxn && ! > > > > > > > > > requiresImmediateIdAccess; > > > > > > > > > bool shouldDelayIdentityInserts = false; > > > > > > > > > > > I changed in my local build to allow this and everything seems > > > to > > > > > work > > > > > > > > > as I had hoped and without issue. Although I'm still trying > > > > > > > > > to > > > > > figure > > > > > > > > > out how to get the unit tests to run so I don't know if this > > > breaks > > > > > > > > > any tests. > > > > > > > > > > > Is there any reason this couldn't be reverted back? > > > > > > > > > > > Thanks, > > > > > > > > > Brian Pritchard > > > > > > > > > > > -- > > > > > > > > > Subscription settings: > > > > > > >http://groups.google.com/group/nhibernate-development/subscribe?hl=en > > > > > > > > > > -- > > > > > > > > Fabio Maulo > > > > > > > > -- > > > > > > Fabio Maulo > > > > > > -- > > > > Fabio Maulo > > > > -- > > Fabio Maulo
