• 工作总结
  • 工作计划
  • 心得体会
  • 述职报告
  • 事迹材料
  • 申请书
  • 作文大全
  • 读后感
  • 调查报告
  • 励志歌曲
  • 请假条
  • 创先争优
  • 毕业实习
  • 财神节
  • 高中主题
  • 小学一年
  • 名人名言
  • 财务工作
  • 小说/有
  • 承揽合同
  • 寒假计划
  • 外贸信函
  • 励志电影
  • 个人写作
  • 其它相关
  • 生活常识
  • 安全稳定
  • 心情短语
  • 爱情短信
  • 工会工作
  • 小学五年
  • 金融类工
  • 搞笑短信
  • 医务工作
  • 党团工作
  • 党校学习
  • 学习体会
  • 下半年工
  • 买卖合同
  • qq空间
  • 食品广告
  • 办公室工
  • 保险合同
  • 儿童英语
  • 软件下载
  • 广告合同
  • 服装广告
  • 学生会工
  • 文明礼仪
  • 农村工作
  • 人大政协
  • 创意广告
  • 您现在的位置:六七范文网 > 其它相关 > 正文

    基于Hibernate系统数据批量处理的性能优化问题研究

    来源:六七范文网 时间:2023-06-11 02:10:09 点击:

    摘要:Hibernate是指对JDBC进行轻量级封装的对象关系映射框架,它使得J2EE开发人员可以使用面向对象的编程思维来操纵数据库。Hibernate可以替代JDBC应用场合,既包括Java的客户端程序,也包括Servlet/JSP的Web应用程序。针对天津市信息分类数据库使用SSH(Struts+Spring+Hibernate)框架整合方案构建系统,提出3种优化方案,以减少基于Hibernate系统数据批量处理执行的代价,提高系统数据批量处理效率。

    关键词关键词:Hibernate;数据批量处理;SSH框架整合;DAO模式

    中图分类号:TP391

    文献标识码:A 文章编号文章编号:16727800(2014)004010702

    作者简介作者简介:徐敬(1979-),男,硕士,天津市信息中心工程师,研究方向为信息系统开发、信息产业管理。

    0 引言

    Hibernate是指对JDBC进行轻量级封装的对象关系映射框架,它使得J2EE开发人员可以使用面向对象的编程思维来操纵数据库。而评判面向对象程序设计好坏的重要指标之一是类的内聚性是否高,耦合度是否低,这就要求Hibernate框架在使用时,最好结合DAO设计模式一起使用。

    DAO是和数据库打交道的操作对象,而这些操作可以从系统的业务逻辑中分离,使其承担业务逻辑对象和数据源之间接口的重任,从而使系统中的数据库操作简化,并且更快地定位问题所在。为建立一个健壮的J2EE应用,DAO封装了所有对数据源的访问操作,而业务逻辑对象不用关心怎么将数据写入数据库,以及如何从数据库中读取数据。DAO模式下设计的程序对底层数据的访问提供了良好支持,而不依赖于JDBC、Hibernate等任何技术。有了DAO模式,可以对程序的业务逻辑单独测试,大大提高了程序的健壮性。在Service层次上,可以把程序的焦点专注于业务逻辑设计上,同时保证了程序业务逻辑的完整性和数据的一致性,同时达到类的耦合度降低的目的。

    总之,使用DAO的目的是将数据控制层(Hibernate框架实现)与业务逻辑控制层相分离,这样不仅更有利于项目开发时的功能划分和工作分配(负责数据层的人员只注重数据操作,负责业务逻辑控制的开发人员只关注业务逻辑,使得项目各成员分工明晰),在项目维护时也更容易定位和解决问题。

    1 天津市信息分类数据库简介

    天津市信息分类数据库是天津市信息中心的重点项目,由信息资源处负责实施。通过天津市分类数据库的建设,可以更好地为天津市市委、市政府及各个区县委办局提供信息决策支持服务,以提升天津市的信息化水平。

    信息资源处的主要职责是向市委、市政府及各区县委办局提供决策支持服务信息,业务包括信息收集、整理、加工等工作。信息的加工以信息加工经验库为依托,以信息分类数据为基础。信息加工经验库采用“八步一中心”的工作方法,旨在收集信息整理、加工经验,使信息采编、整理、加工更加科学化、流程化、规范化,并将一些针对具体问题的信息加工经验模型化,以降低信息加工工作的劳动强度。具体工作步骤如下:①提出研究问题,并对问题分门别类,经验分类库会将历史做法一一列出,供相关工作人员参考;②以该问题为中心使用信息、网络舆情搜索引擎展开信息搜集,在此阶段重点记录问题产生的原因及相关背景资料;③记录工作人员在采编信息时的取向,如关注的网站、论坛、博客等信息;④记录工作人员整理、加工信息的做法,并分析做法的异同;⑤将加工后的信息转换为信息分类数据库统一规定的标准格式;⑥对信息分类数据库中的数据进行统一汇总、分析;⑦针对某一问题的系统输出相关报告;⑧对该问题延伸的信息加工方向进行选择。

    在实施天津市信息分类数据库这个超大数据量的系统过程中,采用SSH框架整合技术。而对信息分类数据库的持续性操作,则由Hibernate框架完成。由于数据量庞大,需对Hibernate框架缓存机制进行研究,并制定相应的优化策略。

    2 Hibernate缓存机制

    缓存是IT领域的一个通用概念,是指介于程序和永久性数据源之间的介质,一般指内存,通常读写速度较快。但如果缓存中存放非常大量的数据时,也会用硬盘作为二级缓存。缓存的实现不仅要考虑存储介质,还要考虑管理缓存的并发访问机制和缓存中数据的生命周期。

    Hibernate缓存包括Session缓存(Hibernate一级缓存)和SessionFactory缓存,其中SessionFactory缓存又可以分为两种:内置和外置。Session缓存是内置的,不能被卸载,能够在某个时间点上按照缓存中对象的变化执行数据库同步操作。而SessionFactory缓存则依据功能和目的的不同,分为内置缓存和外置缓存。SessionFactory的内置缓存中存放了映射元数据和预定义SQL语句,映射元数据是映射文件中数据的副本,而预定义SQL语句是在Hibernate初始化阶段根据映射元数据推导出来的。因此,Session缓存和SessionFactory缓存适合存放如下数据:①经常被修改的数据;②财务数据,绝对不允许出现并发;③与其它应用共享的数据。SessionFactory外置缓存(Hibernate二级缓存)是一个可配置的插件。外置缓存的数据是数据库数据的副本,外置缓存的介质可以是内存或硬盘,其存放如下特征的数据:①很少被修改的数据;②不重要的数据(偶尔并发使用);③不被并发使用的数据;④参考数据。

    3 基于Hibernate系统数据批量处理优化策略

    Hibernate框架数据批量处理的原理是,先把符合条件的数据查找出来,放到内存当中,然后再进行操作。这样一来造成了内存浪费严重,系统性能不理想。因此,可采用以下3种优化方案解决性能问题。

    方案一:绕过Hibernate API ,直接通过 JDBC API 来实现(实现上结合Hibernate事物处理边界方法),此方案性能上较好,速度也是最快的。采用直接调用JDBC API 访问数据库,效率很高,避免了Hibernate 先查询出来加载到内存,再进行操作引发的性能问题。

    方案二:运用存储过程。此方案使用的条件是底层数据库(如Oracle)支持存储过程,可通过存储过程执行数据批量操作。存储过程直接在数据库中运行,速度更快。

    方案三:使用Hibernate API 进行变化的批量处理。具体做法是在查找出一定量的数据时,及时将这些数据在操作完成后删掉,使用语句:session.flush();session.evict(XX对象集),这样可以提升一些系统性能。其中“一定量的数据”要视具体情况而定,一般为50~80条数据左右。以数据库插入100 000 条数据为例:

    tx=session.beginTransaction();

    for(int i=0;i<100000;i++) {

    Customer custom=new Customer();

    custom.setName("user"+i);

    session.save(custom);

    if(i%80==0) // “一定量的数据”设置为80

    {

    session.flush();

    session.clear();

    }

    }

    4 结语

    研究了基于Hibernate框架系统对超大数据量数据库的处理原理,并提出相应的优化策略。提出了基于Hibernate构建的系统,其既可以使用面向对象的方式操纵数据库,又可以达到与JDBC直接操纵数据库方式接近的性能水平。这些优化策略属于基于Hibernate框架的优化策略。

    参考文献:

    [1] 葛朝军,刘伟.Java2 实用培训教程[M].北京:清华大学出版社,2005:61126.

    [2] BRUCE ECKEL.Java编程思想[M].北京:机械工业出版社,2005:92700.

    [3] STEVEN JOHN METSKER,WILLIAN C WAKE.Java 设计模式[M].北京:人民邮电出版社,2007:153340.

    [4] ALEX KRIEGEL,BORIS M TRUKHNOV.SQL宝典[M].北京:电子工业出版社,2003:65466.

    [5] RYAN K STEPHENS,RONALD R PLEW.数据库设计[M].北京:机械工业出版社,2001:71299.

    [6] 刘晓华,张健,周惠贞.JSP应用开发详解(第三版)[M].北京:电子工业出版社,2007:41545.

    [7] 李刚.Struts2权威指南——基于WebWork核心的MVC开发[M].北京:电子工业出版社,2007:50614.

    (责任编辑:黄 健)

    推荐访问:批量 性能 优化 数据 研究