加载hbm.xml 慢问题

在进行Hibernate和Spring整合时,发现启动时加载hbm.xml映射文件过程缓慢。解决方案是确保XML文件包含正确的DOCTYPE定义,引用与Hibernate版本匹配的DTD。默认情况下,Hibernate尝试从CLASSPATH或网络上获取DTD文件。当从Hibernate 2升级到3时,忘记更新DTD路径会导致慢速加载。修正hbm.xml中DTD的URL,使其与hibernate3.jar中找到的DTD文件一致,可以显著提高加载速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天做 hibernate 和spring的整合时用到*.hbm.xml 做映射文件。工程跑起来时发现启动加载这些配置文件时很慢。找到解决办法如下:

所有的XML映射文件都需要定义,如下所示的“DOCTYPE”:  
<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE hibernate-mapping PUBLIC  
    "-//Hibernate/Hibernate Mapping DTD  3.0 //EN"  
    "http://hibernate.sourceforge.net/hibernate-mapping- 3.0.dtd">  

    该DTD定义将会根据不同的Hibernate版本而有所变化。默认情况下,处于XML文件解析效率的考虑,Hibernate在其二进制包hibernate3.jar的类路径"org/hibernate/"会存放一份DTD声明文件。  
    在Hibernate运行阶段,它首先会在Java运行时的类路径(CLASSPATH)下搜索DTD文件,然后再通过XML中的URL访问DTD定义。如果在开发过程中发现Hibernate在解析"*.hbm.xml"时消耗的时间过长时,就需要检查Hibernate是否通过网络来获取DTD文件,并查找Hibernate运行环境是否包含了DTD的定义文件。  
    Hibernate3.0的DTD文件位于:  
http:hibernate.sourceforge.net/hibernate-mapping-3.0.dtd  
开发者将Hibernate从版本2升级到3的时候,往往忽视DTD定义路径的修改,此时Hibernate初始化时导入"*.hbm.xml"非常慢,需要将2.0修改成3.0就不会有问题了。  
                                                ——《Hibernate ORM 最佳实践》


在hibernate3.jar    org.hibernate  中找到对应的hibernate-mapping-3.0 dtd 文件 打开文件看到

<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

修改原来hbm.xml 文件的dtd 路径与之匹配即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值