Pregunta

¿Es posible incrustar el mapeo de hibernado HBM.xml en el fras?

  <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource">
      <ref bean="dataSource" />
    </property>
    <property name="hibernateProperties">
      <props>
        <prop key="hibernate.dialect">
          org.hibernate.dialect.MySQLDialect
        </prop>
      </props>
    </property>
    <property name="mappingResources">
      <list>
        <value>
          com/…/domain/Question.hbm.xml

¿Y apuntarlo a un frasco/etc.?
NHibernate tiene tal opción para señalar un ensamblaje, desde donde aumenta los HBM.
Las anotaciones no son una opción

Editar:EDITAR: Mi intención es eliminar la referencia manual a HBM y señalar una ubicación genérica desde donde Hibernate puede recogerlo

  <list>
    <value>
      com/.../Question.hbm.xml
    </value>
    <value>com/.../Users.hbm.xml</value>
    <value>
      com/.../Answers.hbm.xml
    </value>
¿Fue útil?

Solución

Solo para aclarar, también: está hablando específicamente de Spring y Hibernate juntos, ya que la configuración que muestra es la configuración de Spring de Hibernate. Muelles LocalSessionFactoryBean acepta una multitud de diferentes formas de establecer la ubicación de sus archivos de mapeo Hibernate; Solo muestras usando el mappingResources parámetro, pero también hay mappingLocations, mappingJarLocations, y mappingDirectoryLocations.

Pensaría que para tu ejemplo, es posible que quieras usar mappingDirectoryLocations Y simplemente apírtelo a un directorio específico dentro de su frasco, como:

<property name="mappingDirectoryLocations">
      <list>
        <value>
          com/…/domain/
        </value>
      </list>
</property>

Otros consejos

Sí, puede, de forma predeterminada, Spring va de la ruta de clase al buscar archivos de asignación. Entonces, si el JAR está en su ruta de clase, debe encontrar los archivos sin ningún problema para los archivos de mapeo Hibernate que se incluirán en su bean de fábrica de sesión local.

Entonces, si su archivo de asignación está en my.spring.package y se llama mapping.xml, la ruta

my/spring/package/mapping.xml

debería funcionar bien.

EDITAR

Gracias por el comentario, actualizaré mi respuesta.

NO, no puedes señalar un frasco ... pero , puede apuntar a mapear archivos en el jar.

Utilizo el atributo MappingJarlocations como para extraer todos los archivos *hbm.xml en un jar determinado:

<bean id="sessionFactory"
      class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="mappingJarLocations">
        <list>
            <value>WEB-INF/lib/my-lib.jar</value>
            ...

AnotationsessessionFactoryBean juega bien con anotaciones y archivos de mapeo, por cierto.

EDITAR: Vuelvo a leer algunas de estas publicaciones y también quiero señalar que puede reducir cosas repetitivas creando definiciones abstractas de frijoles así:

<bean id="annotatedClassList" abstract="true">
    <property name="packagesToScan">
        <list>
            <value>com.foo.*.*</value>
            <value>com.foo.*.*.*</value>
            <value>com.foo.*.*.*.*</value>
        </list>
    </property>
</bean>

<bean id="writingSessionFactory"
      parent="annotatedClassList"
      class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="mappingJarLocations">
    ...

<bean id="readingSessionFactory"
      parent="annotatedClassList"
      class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="mappingJarLocations">
    ...

Esto resolvió mi problema

 <build>   <sourceDirectory>src/main/java</sourceDirectory>  
<resources>
    <resource>
        <directory>src/main/java</directory>
        <includes>
            <include>**/*.xml</include>
        </includes>
    </resource>
</resources>

Esto funciona para mi:

<property name="mappingJarLocations">
    <list>
        <value>file:**/yourJarContainHbms.jar</value>
    </list>
</property>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top