问题:公司SSH项目在本地启动调试时解析hbm文件很慢甚至解析不出来,导致服务器启动超时!
为啥!!!
原因1:本地解析hbm的DTD文件没了
Hibernate在其二进制包hibernate3.jar的类路径"org/hibernate/"会存放一份DTD声明文件。
- 在Hibernate运行阶段,它首先会在Java运行时的类路径(classpath)下搜索DTD文件,然后再通过XML中的URL访问DTD定义。如果在开发过程中发现Hibernate在解析"*.hbm.xml"时消耗的时间过长时,就需要检查Hibernate是否通过网络来获取DTD文件,并查找Hibernate运行环境是否包含了DTD的定义文件。
原因2:hbm的DOCTYPE定义配置是老版本的
所有的XML映射文件都需要定义,如下所示的“DOCTYPE”:
<?xml version="1.0" encoding="UTF-8"?> http://hibernate.sourceforge.net/hibernate-mapping- 3.0 .dtd">- 有些人可能配置的是老版本2.0的DOCTYPE,地址是不一样的改过来就好了!笔者就是这个原因,因为我用的公司电脑上myeclipse上的hibernateTool自动生成的hbm文件,而这个东西貌似是个老版本的,doctype生成也是老版本的,导致我浪费了好多时间!难道真的是时候弃坑eclipse奔向IntelliJ IDEA了!!