改善Hibernate应用程序性能的7种方法

添加字幕文本 Hibernate是将Java Web应用程序与SQL数据库集成的好工具,但是当应用程序的响应时间开始显着增加时,我们应该怎么做? 当我们怀疑应用程序是否会随着客户群的增长而扩展时,我们该怎么办?

在花大价钱托管或重写代码之前,请考虑分析和改进Web应用程序的这7个方面。

#1调整JVM内存设置

JVM允许我们配置它将分配给运行我们的应用程序的内存量。 如果未正确配置内存设置(堆大小,perm gen大小等),则可能是垃圾回收进程运行得过于频繁,这将导致CPU使用率激增并停止执行。

#2优化JDBC数据源和Hibernate的配置

在这些配置中,我们可以定义Hibernate和底层JDBC层的一般行为。 在应用程序此部分中所做的更改(池大小,顺序等)可能会影响每个SQL查询和更新。 因此,正确设置这些设置对于您的应用程序的最佳性能至关重要。 在这里还值得一提的是Hibernate 2级缓存。 当应用程序一遍又一遍运行相同的查询时,缓存最多可以节省99%的数据库往返次数。 市场上有几种可以用作二级缓存提供程序的缓存框架,其中最著名的是EHCache , Oracle Coherence , Infinispan和Hazelcast 。

#3优化休眠映射

无论我们是使用批注还是XML文件来配置Hibernate映射,几行更改(延迟加载,批处理等)都可以大大提高应用程序的性能。 这些映射直接影响Hibernate将生成和执行哪些SQL语句。 在大多数情况下,使用默认映射配置可能效果很好,但是针对关键的SQL查询和更新对其进行优化可能会大大增加与数据库的往返次数以及执行所花费的实际时间。

#4优化Hibernate会话管理

在处理事务时,了解不同的隔离级别和传播类型以及将只读和读写DB操作拆分为单独的事务是关键。

#5添加缺少的数据库索引

有几种方法可以识别最耗费资源的SQL语句,但是一旦有了它们的列表,添加必要的索引就变得很简单。 没有这些索引,数据库可能必须逐行读取整个数据库表。 这是数据库中最耗费资源的操作之一,绝对是我们要避免的事情。

#6改善SQL语句

一些由Hibernate生成的SQL语句可能包含许多不必要的联接操作。 这是确保SQL语句爬网的一种可靠方法。 我们必须确保仅包含绝对必要的联接。 要记住的另一件事是如何组织WHERE条件来过滤结果集。 选择错误的顺序可能会使查询速度降低一个数量级。

#7重构Java代码

代码中最典型的问题之一是N + 1查询问题,我们运行查询以获取项目列表,然后遍历这些项目以对每个项目运行单独的查询。 单独使用这种反模式可以终止大多数扩展应用程序的尝试,并且可能使我们在托管方面付出巨大的代价。 由于其修复需要代码重构 ,因此它是最复杂,最昂贵的性能问题之一。

摘要

当所有尝试似乎都无法解决性能问题时,仍然存在希望。 上述项目可能有助于在主要瓶颈升级为更大的问题之前对其进行识别。 哪些性能问题正在损害您的业务?

翻译自: https://www.javacodegeeks.com/2015/08/7-ways-to-improve-performance-of-a-hibernate-application.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/357751.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSDN:2020博客之星年度总评选大赛,趣味总结!

导读:从2020年正式写博客,第一次参加活动,竟然落选了,在此记录一下这个过程吧,方便找帖子链接,毕竟靠着本人的影响力还是能捞点饭票的,哈哈。 2020博客之星年度总评选活动地址:https…

Java 日期格式

转载于:https://www.cnblogs.com/bylion/p/5141022.html

一文教你用java实现出租车计价器设计(附下载源码)

导读:在我国,出租车行业是八十年代初兴起的一项新兴行业,随着出租车的产生,计价器也就应运而生。但当时在全国没有一家企业能够生产,因而那个时期的计价器是由台湾引进。台湾是计价器的主要生产场地,目前全…

一键转发抢红包源码及搭建教程

导读:一键转发抢红包搭建教程如下:源码请在资源模块下载。 搭建教程 第一步注册bmob建立一个项目 项目包括这些表单(file表可以不建立) (应用ID在后台项目设置里面) 表DaSha这样建立 表Sha这样建立 找zi()方法第一步

android 开发

初学者学习 Android 开发,有什么好网站推荐? 前段日子一直在看安卓巴士这个网站,但网站突然进行改版,很多内容都找不到了,一下子怅然若失起来1 条评论 分享按投票排序按时间排序50 个回答 yava,半瓶水fei …

ztree java 增删改_Ztree实现增删改查

1.和另一篇文章--[TreeGrid 实现增删改查]前面的内容一致,只需要创建一个html页面,命名为ztree-01.html,粘贴如下网址的代码进入ztree-01.html。访问http://www.treejs.cn/v3/faq.php#_206复制这些代码html> ZTREE DEMO TITLE>HEAD>…

Android Studio导入项目非常慢的解决办法

问题 Android Studio目前已经更新到2.0 Preview 6了,作为Google大力推崇的开发工具,相对于Eclipse ADT有着不可比拟的优势。然而在实际使用时,依然有不少不爽的地方。Android Studio原生支持使用Gradle来构建项目本是个不错的想法&#xff0c…

DBA 技能图谱——数据库管理员不在迷茫

导读:DBA一般指数据库管理员。数据库管理员(Database Administrator,简称DBA),是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称,属于运维工程师的一个分支,主要负责业务数据库从设计、测试到部署交付的全生命周期管理。 目录 DBA 技能图谱 下载地址 DBA 技能…

java的六大_java程序员必备的六大工具!

原标题:java程序员必备的六大工具!Java程序员都会有套工具来应对工作上的挑战。多年来,Java 程序员使用软件来完成他们的工作。有很多工具对他们是有用的,不过对于初入行的人员来说,寻找合适的工具是困难的&#xff0c…

H5技能图谱——适合各阶段前端程序员的学习地图

导读:学过web前端的都知道,web前端开发主要包括结构、行为和表现。那么要做好web前端,必须知道哪些技能呢?今天孙叫兽给大家介绍web前端的学习地图。 目录 H5技能图谱 下载地址 H5技能图谱 是不是很简单呢,拿赶紧收藏起来学习…

java写exe程序实例_2012软考软件设计师辅导:利用JAVA执行本地EXE文件

曾经为了这样一个需求找了很多资料,今天终于学习到了!如何利用java执行exe文件?使用java类Runtime,每个Java应用程序都有一个Runtime类实例,使应用程序能够与其运行的环境相连接。可以通过getRuntime方法获取当前运行时…

使用Spring JUnit规则进行参数化集成测试

Spring 4.2附带了全新的JUnit规则: SpringClassRule和SpringMethodRule 。 使用JUnit规则的主要优点是让开发人员摆脱SpringJUnit4ClassRunner并在Spring集成测试中利用不同的JUnit运行器。 我认为Spring JUnit Rules的最大机会是易于创建参数化的集成测试。 要测试…

IOS 开发技能图谱——ios 开发工程师必知必会要点

导读:iOS 开发工程师技能图谱,包含开发基础、开发进阶、设计模式、开源项目、APP上传与审核、第三方服务等。 IOS 开发工程师技能图谱 下载地址 点我下载高清iOS 开发工程师技能图谱 关注公众号 电商程序员,回复 iOS 开发工程师技能图谱&am…

网络数据包收发流程(四):协议栈之packet_type

进入函数netif_receive_skb()后,skb正式开始协议栈之旅。先上图,协议栈大致过程如下所示:跟OSI七层模型不同,linux根据包结构对网络进行分层。比如,arp头和ip头都是紧跟在以太网头后面的,所以在linux协议栈…

OpenResty学习地图来啦,速速收藏!

导读:OpenResty学习地图,全英文文档 OpenResty学习地图 下载地址 点我下载高清OpenResty技能图谱 关注公众号电商程序员,回复OpenResty技能图谱,获取下载链接!

java swing游戏_Java Swing井字游戏

java swing游戏大家好! 哇,自从我在这里发布了东西以来已经有一段时间了! 我必须说我真的很想写东西,我保证我不会再陷入“作家的障碍”。 希望 ..最近两个月发生了很多事情,我有很多话要说。 但是在这篇文章中&#x…

恭喜孙叫兽在CSDN年度之“战”中脱颖而出——喜提一等奖(小米手环+定制勋章)

导读:在这个多灾多难又充满惊喜注定不平凡的2020年,大家一起与CSDN共同跨过了艰难的疫情,共同经历烦躁的远程办公,一起为科比的逝世而难过,共同度过2020那所谓世界末日,充满青春,充满活力&#…

Block(Closure) Tips

使用 Block 的时候谨记以下几点: 1.Block类型:全局块(Global Block)和堆块(Heap Block),以及栈块(Stack Block)。2.变量捕获: 默认无法修改变量,需要添加 __b…

【APICloud系列|33】通过程序循环数据集合的时候闭包加入imageCache方法

导读:一般实现的两种思路 1、通过程序循环数据集合的时候闭包加入imageCache方法。 2、通过递归数据集合实现 发现都不是我理想的效果,数据集合量较大的时候imageCache处理的时间比不用imageCache展示的时间要慢很多,展示会有明显延迟,最终采取以下方法 还是for循环将html拼…

Linux最危险的几个命令

Linux最危险的几个命令 Linux最危险的几个命令危险命令介绍删除文件和目录命令rmLinux 的 dd 命令mkfs 格式化硬盘分区shutdown> fileMore Linux最危险的几个命令 仅个人想法,会持续不间断更新和改进。 Linux系统中的命令最美妙也最危险。 如果几个操作系统&…