当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:14:00  来源:本站整理

Hibernate程序性能优化的考虑要点[Java编程]

赞助商链接



  本文“Hibernate程序性能优化的考虑要点[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

本文按照HIBERNATE帮忙文档,一些网络书籍及项目经验整理而成,只供应要点和思绪,具体做法可以留言探究,或是找一些更具体更有针对性的资料.

初用HIBERNATE的人大概都碰到过性能问题,实现同一功效,用HIBERNATE与用JDBC性能相差十几倍很正常,假如不赶早调整,极大概影响整个项目的进度.

大体上,关于HIBERNATE性能调优的主要考虑点以下:

数据库计划调整

HQL优化

API的精确利用(如按照差别的业务范例选用差别的调集及查询API)

主配置参数(日记,查询缓存,fetch_size, batch_size等)

映射文件优化(ID生成战略,二级缓存,耽误加载,关联优化)

一级缓存的管理

针对二级缓存,还有很多特有的战略

事件掌握战略.

1、数据库计划

a) 降低关联的复杂性

b) 尽大概不利用结合主键

c) ID的生成机制,差别的数据库所供应的机制并不完好一样

d) 得当的冗余数据,不过度追求高范式

2、HQL优化

HQL假如抛开它同HIBERNATE本身一些缓存机制的关联,HQL的优化本领同普通的SQL优化本领一样,可以很简单在网上找到一些经验之谈.

3、主配置

a) 查询缓存,同下面讲的缓存不太一样,它是针对HQL语句的缓存,即完好一样的语句再次履行时可以操纵缓存数据.但是,查询缓存在一个交易系统(数据变更频繁,查询条件相同的机率并不大)中大概会起反作用:它会白白耗费大量的系统资源但却难以派上用场.

b) fetch_size,同JDBC的相关参数作用近似,参数并非越大越好,而应按照业务特点去设置

c) batch_size同上.

d) 生产系统中,牢记要关掉SQL语句打印.

4、缓存

a) 数据库级缓存:这级缓存是最高效和安全的,但差别的数据库可管理的层次并不一样,比方,在ORACLE中,可以在建表时指定将整个表置于缓存当中.

b) SESSION缓存:在一个HIBERNATE SESSION有效,这级缓存的可干涉性不强,大多于HIBERNATE自动管理,但它供应排除缓存的办法,这在大批量增添/更新操作是有效的.比方,同时增添十万条记录,按通例方法举行,极大概会发现OutofMemeroy的非常,这时大概需求手动排除这一级缓存:Session.evict以及Session.clear

c) 利用缓存:在一个SESSIONFACTORY中有效,因此也是优化的重中之重,因此,各类战略也考虑的较多,在将数据放入这一级缓存之前,需求考虑一些前提条件:

i. 数据不会被第三方改正(比方,能否有另一个利用也在改正这些数据?)

ii. 数据不会太大

iii. 数据不会频繁更新(不然利用CACHE大概适得其反)

iv. 数据会被频繁查询

v. 数据不是关键数据(如触及钱,安全等方面的问题).

缓存有几种情势,可以在映射文件中配置:read-only(只读,实用于很少变更的静态数据/历史数据),nonstrict-read-write,read-write(对比广泛的情势,效率普通),transactional(JTA中,且支持的缓存产品较少)

d) 分布式缓存:同c)的配置一样,只是缓存产品的选用差别,在目前的HIBERNATE中可供挑选的不多,oscache, jboss cache,目前的大大都项目,对它们的用于集群的利用(分外是关键交易系统)都持保守态度.在集群环境中,只操纵数据库级的缓存是最安全的.


  以上是“Hibernate程序性能优化的考虑要点[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 在Hibernate里面动态切换SChema实现访谒差别的数据库的几种办法
  • Hibernate 3新增XML关系长期性介绍
  • Hibernate配置文件在单元测试中的操纵
  • 在Hibernate中动态切换Schema
  • hibernate annoation (八 关联映射)
  • hibernate annoation (九 cascading)
  • <b>hibernate annoation (十 映射查询)</b>
  • hibernate annoation(十一 缓存Ehcache 采纳annoation)
  • Hibernate:操作配置文件生成数据库
  • hibernate annoation (一 加载)
  • hibernate annoation (二 成立表)
  • <b>hibernate annoation (三 id生成器)</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .