首页IT科技hibernator-validator(hibernate validate工具,小心你的姿势不对)

hibernator-validator(hibernate validate工具,小心你的姿势不对)

时间2025-08-04 23:42:04分类IT科技浏览4791
导读:系统运营后台有个导入线下交易的功能。产品和运营反馈,当excel数据量超过8千条时,会变得超级慢,动辄要等三四十秒。...

系统运营后台有个导入线下交易的功能            。产品和运营反馈            ,当excel数据量超过8千条时                    ,会变得超级慢      ,动辄要等三四十秒                    。

哎!这么慢         ,搁谁能不闹心呢?

基于此                    ,这两天         ,我觉得优化一下      ,可是                    ,一来二去            ,从昨天周一到现在眼看两天了   ,对代码进行各种排查和调整                    ,还是没有达到理想的效果————至少                ,别让用户傻傻等待超过5秒吧,最次也不能超过10秒吧      。

这两天特殊时期                ,公司的保洁阿姨应该也阳了                    ,始终没来上班         。那么   ,卫生工作就得我们上班族自理了                    。

我四下张望一下            ,两个垃圾桶都满了         。再看小伙伴们都在安静的码代码      。我就收拾一下吧                    。在提着垃圾袋扔垃圾的路上                    ,突然灵光乍现            。是不是数据校验那块导致的呢?————校验用的是Hibernate的validation-api   。

完事回到工位      ,赶紧试试                    。

————峰回路转                。

果然         ,本地测试才惊人地发现                    ,用Hibernate的校验工具         ,8200条数据耗时47s      ,而直接用apache common的util类校验                    ,仅需1~2s。

why?

why?

why?

程序使用不当所致                。先贴出来关键代码:

当针对为数不多的对象来校验            ,发现不出来性能问题                    。但是   ,当达到上面的8000多条数据时                    ,那性能可以差太多了   。

细看控制台打印出来的log                ,可见一斑            。

问题出在 validatorFactory 和 validator 这两个局部对象的初始化上                    。尤其是初始化 validatorFactory调用Validation#buildDefaultValidatorFactory, 这个方法内部会涉及到xml文件的读取和类映射                ,可见                    ,每次都做这个事情   ,CPU表示很无辜!

问题即答案————>优化方案是将这2个对象的初始化放在类初始化时      。

声明:本站所有文章            ,如无特殊说明或标注                    ,均为本站原创发布         。任何个人或组织      ,在未征得本站同意时         ,禁止复制             、盗用                  、采集       、发布本站内容到任何网站          、书籍等各类媒体平台                    。如若本站内容侵犯了原著者的合法权益                    ,可联系我们进行处理         。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
微信扫码登录接入(微信登录接口及二维码的生成(完善版))