hibernate性能优化:优化Hibernate性能的几点建议

        1、针对Oracle数据库而言Fetch Size 是设定JDBCStatement读取数据时候每次从数据库中取出记录条数般设置为30、50、100Oracle数据库JDBC驱动默认Fetch Size=15设置Fetch Size设置为:30、50性能会有明显提升如果继续增大超出100性能提升不明显反而会消耗内存   即在Hibernate配制文件中进行配制:

        < property name="hibernateProperties">   < props>

  < prop key="hibernate.dialect">

  org.hibernate.dialect.Oracle9Dialect

  < /prop>

  < prop key="hibernate.show_sql">false< /prop>

  < !-- Create/update the database tables automatically when the JVM starts up

  < prop key="hibernate.hbm2ddl.auto">update< /prop> -->

  < !-- Turn batching off for better error messages under PostgreSQL

  < prop key="hibernate.jdbc.batch_size">100< /prop> -->

  < prop key="hibernate.jdbc.batch_size">50< /prop>

  < /props>< /property>



  2、如果是超大系统建议生成htm文件加快页面提升速度

  3、不要把所有责任推在hibernate上对代码进行重构减少对数据库操作尽量避免在数据库查询时使用in操作以及避免递归查询操作代码质量、系统设计合理性决定系统性能高低

  4、 对大数据量查询时慎用list或者iterator返回查询结果

  (1). 使用List返回结果时Hibernate会所有查询结果化为持久化对象结果集较大时会占用很多处理时间

  (2). 而使用iterator返回结果时在每次iterator.next返回对象并使用对象时Hibernate才查询将对应对象对于大数据量时次查询都会花费较多时间当结果集较大但是含有较大量相同数据或者结果集不是全部都会使用时使用iterator才有优势

     5、在对多、多对关系中使用延迟加载机制会使不少对象在使用时方会这样可使得节省内存空间以及减少数据库负荷而且若PO中集合没有被使用时就可减少互数据库交互从而减少处理时间   6、对含有关联PO(持久化对象)时若default-cascade="all"或者 “save-update”新增PO时请注意对PO中集合赋值操作有可能使得多执行次update操作

  7、 对于大数据量新增、修改、删除操作或者是对大数据量查询和数据库交互次数是决定处理时间最重要原因减少交互次数是提升效率最好途径所以在开发过程中请将show_sql设置为true深入了解Hibernate处理过程尝试区别方式可以使得效率提升尽可能对每个页面显示对数据库操作减少到100----150条以内越少越好

  以上是在进行Struts+hibernate+spring进行项目开发中对hibernate性能优化几点心得体会

TAG: hibernate

Tags:  hibernate查询优化 如何优化hibernate hibernate性能 hibernate性能优化

延伸阅读

最新评论

发表评论