首页 > 代码库 > NHibernate大批量插入数据库的处理方法 NHibernate Batch processing
NHibernate大批量插入数据库的处理方法 NHibernate Batch processing
使用NHibernate插入接近100000条记录到数据库,像下面一个例子:
ISession session = sessionFactory.OpenSession();ITransaction tx = session.BeginTransaction();for ( int i=0; i<100000; i++ ) { Customer customer = new Customer(.....); session.Save(customer);}tx.Commit();session.Close();
这将在大约50 000条记录的时候抛出OutOfMemoryException并终止。这是因为NHibernate缓存所有新插入Customer实例在session-level缓存。
使新对象持久化时,必须不断地先用Flush()然后Clear() session 去控制一级缓存的大小。
ISession session = sessionFactory.openSession();ITransaction tx = session.BeginTransaction(); for ( int i=0; i<100000; i++ ) { Customer customer = new Customer(.....); session.Save(customer); if ( i % 20 == 0 ) { //20, same as the ADO batch size //flush a batch of inserts and release memory: session.Flush(); session.Clear(); }} tx.Commit();session.Close();
NHibernate大批量插入数据库的处理方法 NHibernate Batch processing
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。