知识大全 hibernate的性能优化
Posted 数据库
篇首语:送饥者一条鱼,只管一天不饿;教他学会捕鱼,能使他永不受饿。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 hibernate的性能优化相关的知识,希望对你有一定的参考价值。
Hibernate是对JDBC的轻量级封装 因此在很多情况下Hibernate的性能比直接使用JDBC存取数据库要低 然而 通过正确的方法和策略 在使用Hibernate的时候还是可以非常接近直接使用JDBC时的效率的 并且 在有些情况下还有可能高于使用JDBC时的执行效率
在进行Hibernate性能优化时 需要从以下几个方面进行考虑
数据库设计调整
HQL优化
API的正确使用(如根据不同的业务类型选用不同的集合及查询API)
主配置参数(日志 查询缓存 fetch_size batch_size等)
映射文件优化(ID生成策略 二级缓存 延迟加载 关联优化)
一级缓存的管理
针对二级缓存 还有许多特有的策略
事务控制策略
数据的查询性能往往是影响一个应用系统性能的主要因素 对查询性能的影响会涉及到系统软件开发的各个阶段 例如 良好的设计 正确的查询方法 适当的缓存都有利于系统性能的提升
系统性能的提升设计到系统中的各个方面 是一个相互平衡的过程 需要在应用的各个阶段都要考虑 并且在开发 运行的过程中要不断地调整和优化才能逐步提升系统的性能
设计阶段的考虑问题
一个良好的数据库结构有利于系统性能的提升 这里所说的良好结构的数据库并不单纯是指满足数据库设计范式的数据库结构 这是因为 按照数据库范式所设计的数据库只能说在结构上是最优的 没有冗余数据等问题 但在生产过程中并不一定能获得最佳的性能 有时候适当地增加一些数据的冗余虽然增加了数据维护的难度 但可以极大地简化业务的查询 提高数据检索的效率
在使用Java访问数据库的时候 还存在另外一个问题 就是面向对象的Java语言与关系型数据库之间的矛盾 在这两者之间必然要涉及到一个相互转化的问题 对于这个问题是否能够正确的处理也是影响系统性能的一个重要因素
综合以上提出的各种问题 在数据库设计阶段要综合考虑以下三个方面的因素
Java建模
在建立Java对象模型的时候 要考虑数据库持久化的方便性 所建立的Java对象模型应该可以很容易地被数据所存储 并且数据库中表的结构也是越简单越好
数据库结构
在设计数据库结构的时候也要考虑到是否可以很容易地用Java对象去表示 这里并不是简单的一个表对应一个对象的直接转换 更重要的是转换后的Java对象应该能够描述出数据间的关系
所以在设计阶段 对于Java对象和数据库结构要进行综合考虑 也就是可以从两个方向进行考虑 毕竟两者之间不是一个时代的产物 设计的结果应该在两者之间达到一个平衡 虽然不能每一方都达到最优 但也不能造成有一方结构很差的情况 就像装水的木桶 最矮的板子决定水桶的容量
业务需求
前面两个因素都是纯技术方面的考虑 在设计的过程中 更重要的是要紧扣业务需求 这是因为任何的软件系统都是以业务为中心的 那么对于系统的设计也不例外 在设计的阶段就应该考虑业务实现的方便性以及执行的效率 一个良好的结构设计不但使业务功能的实现变得非常容易并且可以避免很多复杂的操作 还可以达到提升系统性能的目的
cha138/Article/program/Java/ky/201311/29203相关参考
通过以上的介绍可以看出hibernate主要从以下几个方面来优化查询性能 降低访问数据库的频率减少select语句的数目实现手段有使用迫切左外连接或迫切内连接对延迟检索或立即检索设置批量检索数目
Hibernate优化 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 数据库设计 A降低关联的
如何优化Hibernate? 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!cha138/
一批量修改和删除 在Hibernate中如果需要对任何数据进行修改和删除操作都需要先执行查询操作在得到要修改或者删除的数据后再对该数据进行相应的操作处理在数据量少的情况下采用这种处理方式没有问题
如何对Hibernate进行优化的方案 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &
事务概述 事务就是指作为单个逻辑工作单元执行的一组数据操作这些操作要么必须全部成功要么必须全部失败以保证数据的一致性和完整性事务具有ACID属性 原子性自然界最小的事务的内容要么都做要么都不做
Hibernate性能调优 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! inverse=?
Hibernate性能调优[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Hibernat
Hibernate性能调优[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! inverse=
在项目中使用Hibernate进行大数据量的性能测试有一些总结 )在处理大数据量时会有大量的数据缓冲保存在Session的一级缓存