Hibernate中批量保存數據


第一種方式

	public void saveCus(final List<Cus> cuss) {
		this.getHibernateTemplate().execute(new HibernateCallback() {

			@Override
			public Object doInHibernate(Session session) throws HibernateException, SQLException {
				if (CollectionUtils.isNotEmpty(cuss)) {
					Transaction tx = null;
					try {
						tx = session.beginTransaction();
						int i = 0;
						for (Cus c : cuss) {
							session.save(c);
							i++;
							if (i % 100 == 0) {
								logger.warn("第" + (i / 100) + "次刷新");
								session.flush();
								session.clear();
							}
							session.flush();
						}
					} catch (Exception e) {
						logger.warn("批量插入出現異常:" + e);
					} finally {
						if (session != null)
							session.close();
					}
				}
				return null;
			}
		});

	}

第二種方式:

Transatcion tx=session.beginTransaction();
for(int i=0;i<10000;i++)
{
Student st=new Student();
st.setName("feifei");
session.save(st);
if(i%50==0) //以每50個數據作為一個處理單元
{
session.flush(); //保持與數據庫數據的同步
session.clear(); //清除內部緩存的全部數據,及時釋放出占用的內存
}
}
tx.commit();

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM