the read/write of hilo uses a record level lock, so you don't need to worry about 2 session pulling the same hi value. you can also override the hilo table name in the mapping. I like to give each entity which uses hilo it's own separate table. Customer, Customer_HiLo Order, Order_HiLo Foo, Foo_HiLo
On Sep 13, 3:44 am, Thomas Koch <[email protected]> wrote: > Well, using NHProf (why didn't I think of that before?) > > So to answer my own question "no there is no reace condition" > > Details: > > 1) > begin transaction with isolation level: Unspecified > > 2) > Reading high value: > select next_hi > from hibernate_unique_key with (updlock ,rowlock) > > 3) > Updating high value: > update hibernate_unique_key > set next_hi = 1590 /* @p0 */ > where next_hi = 1589 /* @p1 */ > > 4) > Reading high value: > select next_hi > from hibernate_unique_key with (updlock ,rowlock) > > 5) > Updating high value: > update hibernate_unique_key > set next_hi = 1591 /* @p0 */ > where next_hi = 1590 /* @p1 */ > > 6) > Inserting my order > > 7) > Insert an address > > 8) > commit transaction > > The reason I am seeing two updates of the key table is that each > entity gets its own high value. > > Thomas > > On 10 Sep., 14:05, Fabio Maulo <[email protected]> wrote: > > > since the source of "high" is concentrated in one place.... ;) > > > On Fri, Sep 10, 2010 at 8:58 AM, Thomas Koch <[email protected]> wrote: > > > Hi - I use the hi-lo generator for my domain and have a question > > > regarding its use in multiple processes. > > > > I have a WCF project that is the primary power behind generating > > > entities and saving them to the database with NHibernate and HI-LO. I > > > also have an administrative application that sometimes generate > > > entities for the domain. > > > > Since these two applications live en separate processes, is there a > > > risk here of them creating overlapping id's ? > > > > As far as I have understood, each session factory will update the > > > "hibernate_unique_key" table and generate ids based on the "high" > > > value returned. > > > > Can the reading and updating of this "next high value" be considered > > > an atomtic operation even though its done in separate processes? > > > > Regards > > > Thomas > > > > -- > > > You received this message because you are subscribed to the Google Groups > > > "nhusers" group. > > > To post to this group, send email to [email protected]. > > > To unsubscribe from this group, send email to > > > [email protected]<nhusers%[email protected]> > > > . > > > For more options, visit this group at > > >http://groups.google.com/group/nhusers?hl=en. > > > -- > > Fabio Maulo- Skjul tekst i anførselstegn - > > > - Vis tekst i anførselstegn - -- You received this message because you are subscribed to the Google Groups "nhusers" 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/group/nhusers?hl=en.
