首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

HIbernate关键代码位置导致的堆栈溢出有关问题记录&分析&解决

2012-09-19 
HIbernate关键代码位置导致的堆栈溢出问题记录&分析&解决??? 在我回到公司的第一周周五,远程连接客户服务

HIbernate关键代码位置导致的堆栈溢出问题记录&分析&解决

??? 在我回到公司的第一周周五,远程连接客户服务器,查找我们系统无法正常工作的原因。

??? 在查看日志时,发现服务器端日志输出信息有很多重复着Hibernate某个类某行代码的异常。

??? Hibernate官网文章链接:

??? https://forum.hibernate.org/viewtopic.php?p=2385576
??? https://hibernate.onjira.com/browse/HHH-2166

??? 查看以上链接的文章之后,才明白:

??? 在Hibernate现有的依赖JAR包中,该类的实现方式下:当检索where column in (...)语句类似的操作时,如果In语句中包含的项超过了1W项,则:对应检索方法实现会加大递归次数,最终导致了堆栈溢出!

??? 在Hibernate官网以上链接中提供了解决方案,优化了这个循环递归的类,当我将新的改进类放入九厂项目主工程下并编译之后,将其覆盖掉hibernate3.jar中对应的.class文件,重新运行项目,发现一切都解决了!

??? 当时请教了Deng老大,他说:如果以上方式无法解决,我们就在对应的出现错误的方法位置,获取到connection对象,然后纯JDBC方式操作这些in 子项很多的条件检索记录项。(有些疑问:由于这个Hibernate操作类多处[几乎所有地方]都用到了,那么我岂不是要重写所有的方法吗?)
??? 还好使用hibernate官方提供的改进类之后,系统可以正常运行起来了!


??? 至于放入hibernate3.jar的方法,首先在主工程中创建一个与之同级的package目录,然后重新编译项目之后,就出现一个该NodeTraverser的Class字节码文件了,此时将hibernate3.jar用解压缩工具打开,然后替换相应位置下的该字节码文件即可!【简略位置如下图】


??? HIbernate关键代码位置导致的堆栈溢出有关问题记录&分析&解决





热点排行