gpt4 book ai didi

java - hibernate !实体

转载 作者:行者123 更新时间:2023-12-04 05:43:19 30 4
gpt4 key购买 nike

This page建议 !ENTITY:

If you want to avoid duplication, consider using XML entities (for example, [ ] in the DOCTYPE declaration and %allproperties; in the mapping).



问题是我无法在网络上的任何地方找到完整的工作示例。

到目前为止我得到的是:
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"
[ <!ENTITY allproperties SYSTEM "allproperties.xml"> ]
>

..但是剩下的呢?
1. 我如何准确定义 allproperties.xml 中的属性文件?
2. 我如何/在何处包含 %allproperties;关键字(在我的 <class><union-class> 中)?

最佳答案

这是一种称为实体包含的基本 XML 构造。您名为“allproperties.xml”的文件将包含实体的属性映射片段。例如:

<property name="name".../>
<property name="someOtherProperty".../>
<!-- rest of shared property definitions -->

然后在映射文件中你会说:
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" [
<!ENTITY allproperties SYSTEM "allproperties.xml"> ]>

<hibernate-mapping>
<class name="Class1" ...>
<id .../>
&allproperties;
</class>
<class name="Class2" ...>
<id .../>
&allproperties;
</class>
</hibernate-mapping>

我定义了 <id/>在此处的每个类中映射,但如果信息完全相同,您也可以将其移动到包含文件中。任何作为 <class/> 的 child 有效的东西将在包含文件中工作。

JAXP 期望 SYSTEM 引用是相对或绝对文件引用。所以以上意味着 allproperties.xml 文件将相对于包含文件的系统标识符进行解析。通常这可能不会那么好。为此,Hibernate 还理解以 classpath://为前缀的特殊类型的 SYSTEM 引用。正如您所期望的那样,这会触发对所引用资源的类路径资源查找。
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" [
<!ENTITY allproperties SYSTEM "classpath://com/acme/allproperties.xml"> ]>

现在,allproperties.xml 将通过使用 com/acme/allproperties.xml 资源名称的类路径查找来解析。

关于java - hibernate !实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10997522/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com