Hibernate大数据量操作解决方案

转载 2007年09月16日 00:04:00
 
阅读了Hibernate的Reference之后,可以采用批量处理的方法,当插入的数据超过10000时,就flush session并且clear。
下面是一个测试method。
 1 /**
 2      * 测试成批插入数据的事务处理,返回是否成功
 3
     * 
 4      *  @param
 objPO Object
 5      *  @return
 boolean
 6       */

 7      public   boolean  insertBatch( final  Object objPO)  {
 8          boolean  isSuccess  =   false
;
 9         Transaction transaction  =   null
;
10         Session session  =
 openSession();
11          try  
{
12             transaction  =
 session.beginTransaction();
13              for  ( int  i  =   0 ; i  <   100000 ; i ++
{
14
                session.save(objPO);
15                  if  (i  %   50   ==   0
{
16                      //  flush a batch of inserts and release memory

17                     session.flush();
18
                    session.clear();
19                 }

20             }

21             transaction.commit();
22             logger.info( " transaction.wasCommitted: "

23                      +  transaction.wasCommitted());
24             isSuccess  =   true
;
25         }
  catch  (HibernateException ex)  {
26              if  (transaction  !=   null
{
27                  try  
{
28
                    transaction.rollback();
29                     logger.error( " transaction.wasRolledBack: "

30                              +  transaction.wasRolledBack());
31                 }
  catch  (HibernateException ex1)  {
32
                    logger.error(ex1.getMessage());
33
                    ex1.printStackTrace();
34                 }

35             }

36             logger.error( " Insert Batch PO Error: "   +  ex.getMessage());
37
            ex.printStackTrace();
38         }
  finally   {
39              if  (transaction  !=   null
{
40                 transaction  =   null
;
41             }

42             session.close();
43         }

44          return  isSuccess;
45     }

46

这只是简单的测试,实际项目中遇到的问题,要比这个复杂得多。
这时候,我们可以让Spring来控制Transaction,自己来控制Hibernate的Session,随时更新数据。
首先,利用HibernateDaoSupport类来自定义个方法打开Session;
1public Session openSession(){
2
        
3        return
 getHibernateTemplate().getSessionFactory().openSession();
4
        
5    }
然后,用打开的Session处理你的数据;
 1protected void doBusiness(Session session) {
 2

 3        while (true
{
 4            //do your business with the opening session        

 5            someMethod(session);
 6
            session.flush();
 7
            session.clear();
 8            logger.info("good job!"
);            
 9        }
       
10}

每做一次数据操作,就更新一次Session,这样可以保证每次数据操作都成功,否则就让Spring去控制它roll back吧。

最后,记得关闭Session。

1 Session session  =  openSession();
2 doBusiness(session);
3 session.close();  // 关闭session


至于处理速度呢,不会慢到哪儿去的,已经试验过了。; - )

还等什么,赶快试试吧!

Hibernate大数据量操作解决方案

阅读了Hibernate的Reference之后,可以采用批量处理的方法,当插入的数据超过10000时,就flush session并且clear。 下面是一个测试method。 * 测试成批...

大数据量联合主键的插入更新解决方案

数据量大了之后想对一张表的数据进行插入/更新就会非常慢!目前环境是一张主表数据量在一亿的样子,之前做插入更新处理是用的KETTLE抽取工具,然而这张表是四个字段的联合主键,这样判断起来效率就会非常低,...

C/S程序对于大数据量浏览的解决方案

对于大数据量的用户显示,B/S程序几乎清一色的使用分页的方式呈现,一般的,这种方式下用户会查看前几页的数据,当仍然没有找到他所需要的数据时,他会选择重新查询。 在C/S下的程序中,使用分页方式,...

多系统之间大数据量增量同步解决方案

一、背景介绍 上海立邦TU报销系统,是上海立邦集团针对内部的报销的业务,编写的一套系统,此系统主要特点是和Web、SAP和Notes等系统实现无缝对接,从而完成整体业务的流转,目前立邦已经存在SAP...

EXCEL大数据量导出的解决方案

将web页面上显示的报表导出到excel文件里是一种很常见的需求。润乾报表的类excel模型,支持excel文件数据无失真的导入导出,使用起来非常的方便。然而,当数据量较大的情况下,excel本身的支...

大数据量、高并发量网站解决方案

一个小型的网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单。随着互联网业务的不断丰富,网站相关的技术经过...

echarts大数据量展示的解决方案

配置 使用 function drawWaveLayer(xList,yList,tooltip,xshow,yshow,sliderShow,insideShow,main,x,y,x2,y2,...
  • pea378
  • pea378
  • 2017年07月11日 15:25
  • 1492

Mybatis 大数据量的批量insert解决方案

http://blog.csdn.net/wlwlwlwl015/article/details/50246717 版权声明:本文为博主原创文章,转载请标明出处(http://blo...

大数据量获取topn解决方案

/** * list类型有序的存储 * @author wWX154783 */ public class LimitStorageList { private long maxTopN...
  • adam_zs
  • adam_zs
  • 2012年12月20日 09:45
  • 1992

EditText 自动搜索本地数据库(大数据量)卡顿解决方案

假设本地存了很多数据,按关键字搜索,而且要求自动搜索,没有搜索按钮,输入法上也没有,就要求这种体验,当你输入一个字符的时候,EditText的addTextChangedListener其实就开始监听...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hibernate大数据量操作解决方案
举报原因:
原因补充:

(最多只允许输入30个字)