`
javaboys
  • 浏览: 16015 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Hibernate3.2大批量操作数据

阅读更多
flush 时将一级缓存与数据库同步.

大批处理:

大量操作数据时,可能会造成内存溢出,解决方法:
1,清除Session中的数据,

业务逻辑为:我们要想数据库插入10 0000 条数据
for(int i=0;i<100000;i++){
session.save(obj);

// 以每50个数据作为一个处理单元,也就是我上面说的“一定的量”,这个量是要酌情考虑的
if(i%50==0){

session.flush;
session.clear();
}
}

2,用StatelessSession接口,它不与一级缓存和二级缓存交互,也不触发任何事件,
监听器,拦截器,通过该接口的操作会立刻发送给数据库,与JDBC功能一样,
StatelessSession s = sessionFactory.openStatelessSession();
该接口的方法与Session类相似.

3.Query.executeUpdate()执行批量更新,会清除相关联的类二级缓存
(sessionFactory.evict(class)),也可能会造成级联,和乐观锁出现问题



如果大家有更好的方法,欢迎提出!
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics