Hibernate启动非常慢问题分析

  项目中使用hibernate3,在启动项目过程中,发现加载显示数据很慢,要多几分钟才显示出数据,没有报其他异常。今天特别慢,过了好久都不加载显示数据。

排查思路有以下几个方面:

1、数据库是否开启。检查发现已经开启。

2、是否缺少包。检查git修改记录,没有发现改动。

3、tomcat、eclipse等是否配置正常。检查发现没有改动。

接下来就调试代码。

最开始是前端不抛任何错误,后来点击登录,发现抛出了前端ajax中自定义的错误(为了使错误更加明显,修改了错误提示信息)

先调试前端代码,发现直接走到error了,就调试了isExist.do这个方法,发现是调用hibernate的公共类时,一直停在读取配置文件那里。

在该处代码加上了try
catch,视图捕获异常,没有抓到异常。

但是过了一段时间,前端竟然显示了数据库中的数据。推断:加载配置文件很慢。

网上搜索了一下,发现有类似的情况:

也就是说配置文件的dtd不对。

3.0的写法:http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd

再检查自己的配置文件,果然不对,按照文章的说明修改后,加载数据很快了。

再进一步找到了说明文档:

根据定义,先在本地找,找不到则到网上找,网速很慢,则很久才获取到。

hibernate配置文件写法要和对应的版本一致,最好是直接看包中的文档,或者进官网看。

参考文章:

http://blog.csdn.net/xinmashang/article/details/25912373

https://www.oschina.net/question/135959_144269

时间: 2024-10-01 22:15:45

Hibernate启动非常慢问题分析的相关文章

10.hibernate缓存机制详细分析(转自xiaoluo501395377)

hibernate缓存机制详细分析 在本篇随笔里将会分析一下hibernate的缓存机制,包括一级缓存(session级别).二级缓存(sessionFactory级别)以及查询缓存,当然还要讨论下我们的N+1的问题. 随笔虽长,但我相信看完的朋友绝对能对hibernate的 N+1问题以及缓存有更深的了解. 一.N+1问题 首先我们来探讨一下N+1的问题,我们先通过一个例子来看一下,什么是N+1问题: list()获得对象: 1 /** 2 * 此时会发出一条sql,将30个学生全部查询出来

hibernate 双向 1-n(详细分析)

双向 1-n 与 双向 n-1 是完全相同的两种情形 双向 1-n 需要在 1 的一端可以访问 n 的一端, 反之依然. 域模型:从 Order 到 Customer 的多对一双向关联需要在Order 类中定义一个 Customer 属性, 而在 Customer 类中需定义存放 Order 对象的集合属性 关系数据模型:ORDERS 表中的 CUSTOMER_ID 参照 CUSTOMER 表的主键 注意: 当 Session 从数据库中加载 Java 集合时, 创建的是 Hibernate 内

Android Content Provider的启动过程源代码分析

本文参考Android应用程序组件Content Provider的启动过程源代码分析http://blog.csdn.net/luoshengyang/article/details/6963418和<Android系统源代码情景分析>,作者罗升阳. 0.总图流程图如下: 1.MainActivity进程向ActivityServiceManager主线程发送GET_CONTENT_PORVIDER_TRANSACTION 如下图: 如图:第一步 ~/Android/frameworks/b

tomcat启动非常慢原因深入分析

有些情况下tomcat启动非常慢,通过jstack查看当前堆栈 /opt/java/jdk1.8.0_121/bin/jstack  14970 > /home/ubuntu/j.log 关键内容 "main" #1 prio=5 os_prio=0 tid=0x00007fc69c00a000 nid=0x3a7b runnable [0x00007fc6a5db5000]java.lang.Thread.State: RUNNABLEat java.io.FileInputS

Android --- Zygote和System进程启动过程简要分析

Android --- Zygote和System进程启动过程简要分析 在看过<Android情景源代码>的Zygote启动章节后,作如下简要总结.Zygote进程在init进程启动过程中被以service服务的形式启动: service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server class main socket zygote stream 660 root syste

启动Tomcat一闪而过——分析及解决过程

转自http://www.cnblogs.com/godtrue/p/4339045.html 启动Tomcat一闪而过--分析及解决过程 嗯,昨天将有关JDK的知识稍微整理了一下,现在稍微整理一下有关Tomcat的! 1:Tomcat是什么? Tomcat是当今世界上使用最为广泛的.开源免费的Servlet/JSP容器,其主要功能是用于发布JavaWeb应用. 更多的信息请参看: http://tomcat.apache.org/ 2:怎么选择Tomcat的版本 规则是看我们选择使用的技术是什

Android之rild进程启动源码分析

Android 电话系统框架介绍 在android系统中rild运行在AP上,AP上的应用通过rild发送AT指令给BP,BP接收到信息后又通过rild传送给AP.AP与BP之间有两种通信方式: 1.Solicited Response:Ap向Bp发送请求,Bp给Ap发送回复,该类型的AT指令及其回调函数以数组的形式存放在Ril_commands.h文件中: {数组中的索引号,请求回调函数,响应回调函数} [plain] view plaincopy {0, NULL, NULL},      

Hibernate 常用jar包 分析

antlr-2.7.6.jar的作用 ANTLR (ANother Tool for Language Recognition) 是一个PCCTS制定的语言工具,它为他创建认定者,程序编译者,翻译者提供一个包括 java,c#和C++在内的语 法描述框架,使用from 多态查询语句时需要它. 语言转换工具,Hibernate利用它实现HQL?到SQL的转换 错误情况: 项目中没有添加antlr-2.7.6.jar,hibernate不会执行hql语句 并且会报NoClassDefFoundErr

Android系统默认Home应用程序(Launcher)的启动过程源代码分析

在前面一篇文章中,我们分析了Android系统在启动时安装应用程序的过程,这些应用程序安装好之后,还需要有一个 Home应用程序来负责把它们在桌面上展示出来,在Android系统中,这个默认的Home应用程序就是Launcher了,本文将详细分析 Launcher应用程序的启动过程. Android系统的Home应用程序Launcher是由ActivityManagerService启动的,而 ActivityManagerService和PackageManagerService一样,都是在开