最常见的Java Hibernate性能问题与过多或低效的数据库查询有关 。 Hibernate触发这些过多查询的原因有很多 , 但它们通常与下面常见的Hibernate 性能问题有关 。 想对Hibernate性能问题有更深入的了解 , 可以参加java培训 , 在专业老师的指导下 , 你可以很快掌握java的更多特性 。
1.SQL 语句记录
每次你的数据库被访问时 , Hibernate都会默认记录该操作 。 但是 , 在一个使用良好的应用程序中 , 访问给定数据库的大量时间(通常是不必要的)可能会导致日志引擎出现问题 。 在规模上 , 这些对多个数据库的并发请求会使你的日志引擎成为性能瓶颈 。
2.N+1 选择问题
【Windows|Java培训:Hibernate 的 6 个常见问题】当使用默认的FetchType.LAZY 时 , Hibernate容易出现过多的、透明的N+1查询 。 因为查询不保持会话 , 所以每次请求数据时它们都会针对数据库执行 。 对于请求大型数据集的查询 , 这可能意味着较长的响应时间 , 这也使得Hibernate 不适合流数据集 。
3.个别实体更新
当我们编写面向对象的代码时 , 我们习惯于以原子方式处理单个对象 , 更新它们并逐个操作它们 。 使用Hibernate很容易养成这种习惯 , 但是 , 开发人员必须记住 , 对Hibernate 中的Entity对象进行的每次更新都会导致执行*实际的数据库查询* 。 请务必考虑将批量更改而不是单个更改推送到EntityManager 。 在java培训中 , 培训课程不仅注重理论 , 更注重项目的实战能力 , 能够让你快速适应企业开发的进度 , 成为企业所需要的JAVA人才 。
4.热切关联
Hibernate急切地获取一对一的关系 , 通常会导致过多的查询 。 如果你有多个表试图与另一个表连接 , Hibernate将获取整个表 , 而不是获取适用的数据条目 。 默认情况下 , 这是低效的 。 而且 , 根据表的大小、应用程序的规模和必要的连接数量 , 这种低效的查询可能会导致性能问题 。
5.Hibernate 会产生低效的查询
许多开发人员希望Hibernate能够生成高效的查询 。 不幸的是 , 许多自动生成的SQL 查询效率低下 。 外卖?Hibernate无法生成优于人工编码查询的查询 。 对于某些团队来说 , 轻松生成可能是值得的 。
但是 , 对于更大的团队或更大的应用程序 , 那些低效的查询(以及修复它们所需的开发时间)可能会对应用程序的性能和开发构成重大障碍 。 复杂和复杂的查询几乎总是更好地留给人类开发人员 , Hibernate始终擅长一次针对相对少量记录的简单CRUD操作 。 通过java培训 , 会有关于Maven的使用技巧的课程 , 学好这些技巧 , 有助于更好地进行开发项目 , 少出问题 。
6.Hibernate 有锋利的边缘
对于大多数Java技术 , 我们鼓励开发人员通过亲身体验来发现细节——但对于新开发人员来说 , hibernate可能具有优势 。 在生产环境中运行Hibernate而对技术没有绝对的理解可能会产生灾难性的后果(想想删除数据库) 。
关于Java Hibernate 的最终想法
复杂的数据结构需要比Hibernate这样的灵丹妙药更直观的东西 , 才能成功构建高效、可扩展的查询 。 Hibernate提供的自动查询不如人工创建的查询高效——而且该技术当然不会取代数据库管理员或数据科学家 。 参加以实战项目为主要教学方法的Java培训 , 可以有效地缩短同企业具体用人需求之间的差距 , 快速提升自己 。
- 百度地图|你对 Java 中 HashCode 方法,有哪些思考?
- 高通骁龙|Java程序员从携程、美团、阿里面试回来,这些面经分享给大家
- Windows|如果中国所有的电脑都不能用windows,企业基本凉了,个人没影响
- Windows|安卓游戏可在Windows上完美运行
- 芯片|Google代码泄密!游戏笔记本未来有 Windows 以外的新选择?
- 操作系统|国产操作系统的希望,被称“中国版微软”,UOS能否替代Windows?
- Windows|直降1359元,中兴A30Ultrta,是否值得购买?
- Windows11|Windows 11下月将全面开放安卓子系统,安卓应用可在PC原生运行
- Windows|单片机内外部晶振,到底有什么区别?
- Java|2022年最值得期待的高端旗舰!华为、小米、苹果谁更胜一筹?