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

  本篇文章为你整理了hibernate validate工具,小心你的姿势不对()的详细内容,包含有 hibernate validate工具,小心你的姿势不对,希望能帮助你了解 hibernate validate工具,小心你的姿势不对。

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

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

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

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

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

  

  

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

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

  ————峰回路转。

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

  why?

  why?

  why?

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

  

import javax.validation.ConstraintViolation;

 

  import javax.validation.Validation;

  import javax.validation.Validator;

  import javax.validation.ValidatorFactory;

  public class ValidationUtil {

   private ValidationUtil() {

   * 根据注解,校验参数的工具类

   * @pojo pojo bean

   * @return 验证结果

   public static Result Void validate(Object pojo) {

   if (pojo == null) {

   return Result.err(ResultCodeEnum.ERROR_PARAM, "参数为空");

   ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();

   Validator validator = validatorFactory.getValidator();

   Set ConstraintViolation Object constraintViolations = validator.validate(pojo);

   if (CollUtil.isNotEmpty(constraintViolations)) {

   return Result.err(ResultCodeEnum.ERROR_PARAM, constraintViolations.iterator().next().getMessage());

   return Result.success();

  }

 

  

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

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

  

  

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

  

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

  
当看到一些不好的代码时,会发现我还算优秀;当看到优秀的代码时,也才意识到持续学习的重要!--buguge
本文来自,转载请注明原文链接:https:///buguge/p/16995017.html

  以上就是hibernate validate工具,小心你的姿势不对()的详细内容,想要了解更多 hibernate validate工具,小心你的姿势不对的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: