hibernación !ENTIDAD

En esta página sugiere !ENTIDAD:

Si desea evitar la duplicación, considere usar entidades XML (por ejemplo, [ ] en la declaración DOCTYPE y %allproperties; en la asignación).

El problema es que no puedo encontrar en ninguna parte de la web un ejemplo de trabajo completo.

Lo que tengo hasta ahora es:

<!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"> ]
        >

.. pero y el resto?
1. ¿Cómo defino EXACTAMENTE las propiedades en el allproperties.xml archivo?
2. ¿Cómo/Dónde EXACTAMENTE incluyo el %allproperties; palabra clave (dentro de mi <class> y <union-class>)?

preguntado el 12 de junio de 12 a las 14:06

1 Respuestas

Esta es una construcción XML básica llamada entidad incluida. Su archivo llamado 'allproperties.xml' contendría los fragmentos de mapeo de propiedades de las entidades. Por ejemplo:

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

Luego, en un archivo de mapeo dirías:

<!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>

Definí el <id/> mapeo en cada clase aquí, pero también puede mover eso al archivo de inclusión si la información es la misma. Cualquier cosa que sea válida como hijo de <class/> funcionará en el archivo de inclusión.

JAXP espera que las referencias de SISTEMA sean referencias de archivo relativas o absolutas. Lo anterior significa que el archivo allproperties.xml se resolvería en relación con el identificador del sistema del archivo de inclusión. A menudo, eso podría no funcionar tan bien. Con ese fin, Hibernate también comprende un tipo especial de referencia SYSTEM con el prefijo classpath://. Como es de esperar, eso desencadena una búsqueda de recursos de classpath para el recurso al que se hace referencia.

<!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"> ]>

Ahora, allproperties.xml se resolverá a través de una búsqueda de classpath utilizando el nombre de recurso com/acme/allproperties.xml.

Respondido 18 ago 12, 19:08

Olvidé mencionar que Hibernate también entiende un tipo especial de referencia de SISTEMA con el prefijo classpath://. Como es de esperar, eso desencadena una búsqueda de recursos de classpath para el recurso al que se hace referencia. De lo contrario, JAXP espera que las referencias del SISTEMA sean referencias de archivo relativas o absolutas. Editará la respuesta para mostrar esa opción también. - steve ebersole

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.