mirror of
https://github.com/hibernate/hibernate-orm
synced 2025-02-08 20:24:46 +00:00
documented DTDEntityResolver capabilities
git-svn-id: https://svn.jboss.org/repos/hibernate/trunk/Hibernate3/doc@9973 1b8cb986-b30d-0410-93ca-fae66ebed9b2
This commit is contained in:
parent
8a7ca8a148
commit
469669f121
@ -96,7 +96,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
<sect2 id="mapping-declaration-doctype" revision="2">
|
<sect2 id="mapping-declaration-doctype" revision="3">
|
||||||
<title>Doctype</title>
|
<title>Doctype</title>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
@ -107,6 +107,58 @@
|
|||||||
Internet connection, check your DTD declaration against the contents of your
|
Internet connection, check your DTD declaration against the contents of your
|
||||||
claspath.
|
claspath.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
<sect3 id="mapping-declaration-entity-resolution">
|
||||||
|
<title>EntityResolver</title>
|
||||||
|
<para>
|
||||||
|
As mentioned previously, Hibernate will first attempt to resolve DTDs in its classpath. The
|
||||||
|
manner in which it does this is by registering a custom <literal>org.xml.sax.EntityResolver</literal>
|
||||||
|
implementation with the SAXReader it uses to read in the xml files. This custom
|
||||||
|
<literal>EntityResolver</literal> recognizes two different systemId namespaces.
|
||||||
|
</para>
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
a <literal>hibernate namespace</literal> is recognized whenever the
|
||||||
|
resolver encounteres a systemId starting with
|
||||||
|
<literal>http://hibernate.sourceforge.net/</literal>; the resolver
|
||||||
|
attempts to resolve these entities via the classlaoder which loaded
|
||||||
|
the Hibernate classes.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
a <literal>user namespace</literal> is recognized whenever the
|
||||||
|
resolver encounteres a systemId using a <literal>classpath://</literal>
|
||||||
|
URL protocol; the resolver will attempt to resolve these entities
|
||||||
|
via (1) the current thread context classloader and (2) the
|
||||||
|
classloader which loaded the Hibernate classes.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
<para>
|
||||||
|
An example of utilizing user namespacing:
|
||||||
|
</para>
|
||||||
|
<programlisting><![CDATA[<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE hibernate-mapping PUBLIC
|
||||||
|
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
|
||||||
|
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" [
|
||||||
|
<!ENTITY types SYSTEM "classpath://your/domain/types.xml">
|
||||||
|
]>
|
||||||
|
|
||||||
|
<hibernate-mapping package="your.domain">
|
||||||
|
<class name="MyEntity">
|
||||||
|
<id name="id" type="my-custom-id-type">
|
||||||
|
...
|
||||||
|
</id>
|
||||||
|
<class>
|
||||||
|
&types;
|
||||||
|
</hibernate-mapping>]]></programlisting>
|
||||||
|
<para>
|
||||||
|
Where <literal>types.xml</literal> is a resource in the <literal>your.domain</literal>
|
||||||
|
package and contains a custom <xref linkend="mapping-types-custom">typedef</xref>.
|
||||||
|
</para>
|
||||||
|
</sect3>
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|
||||||
<sect2 id="mapping-declaration-mapping" revision="3">
|
<sect2 id="mapping-declaration-mapping" revision="3">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user