You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Hibernate离线运行,避免在线下载DTD与校验Schema?

Hibernate离线DTD与Schema校验配置指南

Hey there, let's tackle your two Hibernate offline configuration questions clearly and practically!

1. 配置Hibernate支持离线使用DTD

Hibernate默认联网下载DTD的行为确实有点烦人,尤其是在网络不稳定的环境下。这里有两种可靠的方法让它离线运行:

方法一:直接修改DOCTYPE引用为本地资源

首先,把对应的Hibernate DTD文件(比如hibernate-mapping-3.0.dtd、hibernate-configuration-3.0.dtd)下载到你的项目类路径下,推荐放在src/main/resources/hibernate/dtd/这类结构化目录里。

然后把配置文件里的DOCTYPE URL替换成类路径引用,比如:

classpath:前缀会告诉Hibernate直接从项目的类路径(编译后的resources目录)里加载DTD,完全不需要联网。

方法二:通过Hibernate属性强制离线模式

在你的hibernate.cfg.xml配置文件中添加以下属性,让Hibernate优先从本地查找DTD,彻底跳过联网步骤:

<property name="hibernate.dtd.lookup_in_file_system">true</property>
<property name="hibernate.dtd.lookup_in_classpath">true</property>
  • lookup_in_file_system:开启后会先在本地文件系统查找DTD
  • lookup_in_classpath:开启后会优先从类路径加载DTD

配合方法一使用的话,就能完全确保离线运行了。


2. 调整映射配置实现离线Schema校验

针对你给出的这段映射配置:

只需要两步就能改成离线模式:

  1. 下载DTD文件:从Hibernate依赖包或官方渠道找到hibernate-mapping-3.0.dtd,放到项目的类路径目录下,比如src/main/resources/dtd/。

  2. 修改DOCTYPE的URL:把远程URL替换成本地类路径引用(推荐)或者本地文件路径:

    • 类路径方式(打包后依然有效):
      <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "classpath:/dtd/hibernate-mapping-3.0.dtd">
      
    • 本地文件路径(适合开发环境,用绝对路径):
      <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "file:///Users/yourname/projects/your-project/src/main/resources/dtd/hibernate-mapping-3.0.dtd">
      

这样调整后,Hibernate在做Schema校验时就会从本地加载DTD,不会再触发在线请求了。

内容的提问来源于stack exchange,提问作者michealAtmi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:52:54