XML映射文件中的DTD定义(Hibernate初始化导入*.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 最佳实践》

你可能感兴趣的:(xml,Hibernate,.net,orm)