Domanda

E 'possibile incorporare i mapping Hibernate hbm.xml di al barattolo e di evitare di riferimento manuale in applicationContext.xml come

  <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

e puntarlo a un vaso / etc?
NHibernate ha una tale opzione per puntare a un assieme, da dove si prende alza la HBM.
Le annotazioni non sono un'opzione

Modifica Modificare: La mia intenzione è quella di rimuovere riferimento manuale per HBM di e puntare a una posizione generica da cui Hibernate può raccoglierlo

  <list>
    <value>
      com/.../Question.hbm.xml
    </value>
    <value>com/.../Users.hbm.xml</value>
    <value>
      com/.../Answers.hbm.xml
    </value>
È stato utile?

Soluzione

Giusto per chiarire, così: si sta parlando specificatamente Spring e Hibernate insieme, poiché la configurazione si sta mostrando è la configurazione di primavera di Hibernate. Spring LocalSessionFactoryBean accetta una moltitudine di diversi modi per impostare la posizione dei file di mapping Hibernate; si mostra solo con il parametro mappingResources , ma c'è anche mappingLocations , mappingJarLocations , e mappingDirectoryLocations .

mi piacerebbe pensare che, per il tuo esempio, si potrebbe desiderare di utilizzare mappingDirectoryLocations e basta puntare a una directory specifica all'interno del vostro JAR, come ad esempio:

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

Altri suggerimenti

Sì, è possibile, per impostazione predefinita Primavera va dal percorso classe quando ricerca di file di mapping. Quindi, se il vaso è sul percorso di classe, dovrebbe trovare i file non è un problema per i file di mapping Hibernate da includere nel vostro session bean fabbrica locale.

Così, se il file di mapping è in my.spring.package e si chiama mapping.xml, il percorso

my/spring/package/mapping.xml

dovrebbe funzionare bene.

Modifica

Grazie per il commento, aggiornerò la mia risposta.

No , non si può puntare ad un vaso ... ma YES , si può puntare a mappare i file nel vaso.

Io uso le mappingJarLocations attribuiscono questo modo di tirare in tutti i file * hbm.xml in un dato vaso:

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

AnnotationSessionFactoryBean gioca bello, con annotazioni e file di mapping, btw.

Edit: ho riletto alcuni di questi posti e voglio anche sottolineare che è possibile ridurre roba ripetitivo con la creazione di definizioni astratte fagiolo in questo modo:

<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">
    ...

questo risolto il mio problema

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

Si lavora per me:

<property name="mappingJarLocations">
    <list>
        <value>file:**/yourJarContainHbms.jar</value>
    </list>
</property>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top