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

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

时间2025-05-05 14:49:53分类IT科技浏览3434
导读:系统运营后台有个导入线下交易的功能。产品和运营反馈,当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
lxml&xpath一站式教学