[Java] Hibernate在不联网时不能解析配置文件解决方案

在做项目时通常用hibernate框架来进行数据库的一些操作,但是有时候网络条件差或者不联网的情况下,在对数据库进行增删改查操作时,总是会报下面的异常:


之前在做时没在意这些,后来通过查了一些资料,才知道了问题出现的原因所在。

我们可以看一下hibernate.cfg.xml文件的开始部分有如下代码:

<?xml version='1.0' encoding='UTF-8'?>
 <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
   "<span style="color:#FF6600;"><strong>http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd</strong></span>">

而一般的xx.hbm.xml文件的开始部分代码如下:

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
   "<span style="color:#FF6600;"><strong>http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd</strong></span>">

原因就出现在dtd文件那里,因为hibernate的两个配置文件分别都会默认去上面两个加粗的网站去找,所以当使用hibernate进行数据库操作时,如果你的网络环境不好或者没联网,此时配置文件无法访问指定的dtd验证文件,所以才会出现xml无法解析的异常。

所以解决该问题的方法就是:在需要使用hibernate的项目里,通常在该项目中建立一个文件夹,里面用来存放用于验证hibernate.cfg.xml的dtd文件和验证xx.hbm.xml的dtd文件,例如如下代码,我在我的项目下建立了一个dtd文件夹,里面放了hibernate-configuration-3.0.dtd文件和hibernate-mapping-3.0.dtd文件:
                    【注: 编译器不同读取dtd文件路径,也不同!】
                    解决方法:在指定的路径下创建文件夹并保存文件!

xx.hbm.xml代码:

<span style="font-size:14px;"><?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
   "<span style="color:#000099;"><span style="background-color: rgb(255, 255, 255);"><strong>dtd/hibernate-mapping-3.0.dtd</strong></span></span>">
<span><span style="color:#000000;">
hibernate.cfg.xml代码:</span></span>
</span>

<?xml version='1.0' encoding='UTF-8'?>
 <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
   "<strong><span style="color:#000099;">dtd/hibernate-configuration-3.0.dtd</span></strong>">
这时无论在联网或者非联网环境下使用hibernate时,其都会去你指定的路径去找对应的dtd,而不会去hibernate的官网去找对应的dtd,这样就不好再出现上面的xml无法解析的异常了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值