A long time ago I tried stateless session to do what your doing and ended up punting and replacing it with bulk copy.
Oracle, at least the full odp.net, had OracleBulkCopy which I ended up using instead of NHibernate. I don't know if the bulk copy classes exist in the managed provider. The bulk copy classes are significantly faster than trying to wrangle this through NHibernate On Jul 7, 2017 1:09 PM, "Felipe Oriani" <[email protected]> wrote: > Hi Gunnar, > > I am using Oracle but it also can run over MsSql. > > I am sorry, I express myself wrong. I execute a DataReader on another > database which give a result set of 200k records. I loop on this and > compact 100 records on a json (Clob/text field) and persist one line on the > session. For 200k, it will be 2500 records on insert the stateless session. > To improve the performance, the ID of this entity I am going to persist it > mapped as GUID. > > The question is about the *transaction*, on my architecture, the > repository depends of session factory, which contains a session on the bind > (take by GetCurrentSession). I would like to know, if on the method where I > need to process this massive data, if I initilize another session > (stateless) by passing the Connection of the session (Session.Connection) > on the factory.OpenStatelessSession(), will I have the statelesse session > on the same transaction? > > Thank you. > > > > > > > > > > > On Fri, Jul 7, 2017 at 12:24 PM, Gunnar Liljas <[email protected]> > wrote: > >> 200000 is a lot, even for a stateless session. Are you using MSSQL? >> >> /G >> >> 2017-07-07 16:22 GMT+02:00 Felipe Oriani <[email protected]>: >> >>> Hello guys. >>> >>> I am developing a process where we need to insert more than 200.000 >>> records on the database and it can increse. To have a performance, we need >>> to implement a stateless session to insert all the data. >>> >>> The problem is that on our Repositories implementations we depend on the >>> SessionFactory which contains a session on bind and we take it from >>> SessionFactory.GetCurrentSession() and depending on the context, it >>> already has an active transaction. >>> >>> My question is: Is there any way to implement bulk insert operations on >>> the normal Session instead of Stateless session? >>> >>> If no, I would like to know, if is there any way to open a Stateless >>> session to perform the bulk insert operation for the same transaction? Or >>> should I need to open a stateless session from my sessionFactory? >>> >>> I've seen that stateless session can take a DbConnection, so I could try >>> this: >>> >>> var statelessSession = factory.OpenStatelessSession(session.Connection); >>> >>> But I am not sure how it is going to work. If it is fine to and I will >>> get the same transaction. >>> >>> Thank you. >>> >>> >>> >>> >>> -- >>> ______________________________________ >>> Felipe B Oriani >>> [email protected] >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "nhusers" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To post to this group, send email to [email protected]. >>> Visit this group at https://groups.google.com/group/nhusers. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "nhusers" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To post to this group, send email to [email protected]. >> Visit this group at https://groups.google.com/group/nhusers. >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > ______________________________________ > Felipe B Oriani > [email protected] > > -- > You received this message because you are subscribed to the Google Groups > "nhusers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/nhusers. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "nhusers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/nhusers. For more options, visit https://groups.google.com/d/optout.
