hibernate的性能优化

 我来答
濒危物种1718
2022-10-10 · TA获得超过1.2万个赞
知道大有可为答主
回答量:6405
采纳率:100%
帮助的人:44.3万
展开全部

  Hibernate是对JDBC的轻量级封装 因此在很多情况下Hibernate的性能比直接使用JDBC存取数据库要低 然而 通过正确的方法和策略 在使用Hibernate的时候还是可以非常接近直接使用JDBC时的效率的 并且 在有些情况下还有可能高于使用JDBC时的执行效率

  在进行Hibernate性能优化时 需要从以下几个方面进行考虑

  数据库设计调整

  HQL优化

  API的正确使用(如根据不同的业务类型选用不同的集合及查询API)

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

  映射文件优化(ID生成策略 二级缓存 延迟加载 关联优化)

  一级缓存的管理

  针对二级缓存 还有许多特有的策略

  事务控制策略

  数据的查询性能往往是影响一个应用系统性能的主要因素 对查询性能的影响会涉及到系统软件开发的各个阶段 例如 良好的设计 正确的查询方法 适当的缓存都有利于系统性能的提升

  系统性能的提升设计到系统中的各个方面 是一个相互平衡的过程 需要在应用的各个阶段都要考虑 并且在开发 运行的过程中要不断地调整和优化才能逐步提升系统的性能

   设计阶段的考虑问题

  一个良好的数据库结构有利于系统性能的提升 这里所说的良好结构的数据库并不单纯是指满足数据库设计范式的数据库结构 这是因为 按照数据库范式所设计的数据库只能说在结构上是最优的 没有冗余数据等问题 但在生产过程中并不一定能获得最佳的性能 有时候适当地增加一些数据的冗余虽然增加了数据维护的难度 但可以极大地简化业务的查询 提高数据检索的效率

  在使用Java访问数据库的时候 还存在另外一个问题 就是面向对象的Java语言与关系型数据库之间的矛盾 在这两者之间必然要涉及到一个相互转化的问题 对于这个问题是否能够正确的处理也是影响系统性能的一个重要因素

  综合以上提出的各种问题 在数据库设计阶段要综合考虑以下三个方面的因素

   Java建模

  在建立Java对象模型的时候 要考虑数据库持久化的方便性 所建立的Java对象模型应该可以很容易地被数据所存储 并且数据库中表的结构也是越简单越好

    数据库结构

  在设计数据库结构的时候也要考虑到是否可以很容易地用Java对象去表示 这里并不是简单的一个表对应一个对象的直接转换 更重要的是转换后的Java对象应该能够描述出数据间的关系

  所以在设计阶段 对于Java对象和数据库结构要进行综合考虑 也就是可以从两个方向进行考虑 毕竟两者之间不是一个时代的产物 设计的结果应该在两者之间达到一个平衡 虽然不能每一方都达到最优 但也不能造成有一方结构很差的情况 就像装水的木桶 最矮的板子决定水桶的容量

    业务需求

  前面两个因素都是纯技术方面的考虑 在设计的过程中 更重要的是要紧扣业务需求 这是因为任何的软件系统都是以业务为中心的 那么对于系统的设计也不例外 在设计的阶段就应该考虑业务实现的方便性以及执行的效率 一个良好的结构设计不但使业务功能的实现变得非常容易并且可以避免很多复杂的操作 还可以达到提升系统性能的目的

lishixinzhi/Article/program/Java/ky/201311/29203

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
柚鸥ASO
2024-03-16 广告
「柚鸥ASO」在ASO这块就做的蛮不错的,一直专注于应用商店优化,因为专注所以专业;专注应用商店下载量优化、评分优化、关键词排名优化、关键词覆盖、产品权重提升等等整体方案优化服务柚鸥网络-全球ASO优化服务商专注ASO优化已11年!(效果说... 点击进入详情页
本回答由柚鸥ASO提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式