Question

Est-il possible d'intégrer les hbm.xml mapping hibernate de la jarre et éviter manuel de référence dans applicationContext.xml comme

  <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

et pointer vers un pot / etc?
NHibernate a une telle option pour pointer vers un ensemble, d'où il prend ups. HBM est le
Les annotations ne sont pas une option

Edit: Modifier: Mon intention est de supprimer la référence manuelle pour HBM et pointer vers un emplacement générique où veille prolongée peut le ramasser

  <list>
    <value>
      com/.../Question.hbm.xml
    </value>
    <value>com/.../Users.hbm.xml</value>
    <value>
      com/.../Answers.hbm.xml
    </value>
Était-ce utile?

La solution

Juste pour clarifier, ainsi vous parlez précisément Spring et Hibernate ensemble, puisque la configuration vous montrant est la configuration de printemps Mise en veille prolongée. Spring paramètre de mappingResources, mais il y a aussi mappingLocations , mappingJarLocations et mappingDirectoryLocations .

Je pense que votre exemple, vous pouvez utiliser mappingDirectoryLocations et juste pointer à un répertoire spécifique dans votre JAR, tels que:

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

Autres conseils

Oui, vous pouvez, par défaut Spring va du chemin de classe lorsque la recherche de fichiers de mappage. Donc, si le pot est sur votre chemin de classe, il doit trouver les fichiers sans problème pour les fichiers de mappage de mise en veille prolongée à inclure dans votre bean usine de session locale.

Donc, si votre fichier de mappage est en my.spring.package et est appelé mapping.xml, le chemin

my/spring/package/mapping.xml

devrait fonctionner très bien.

EDIT

Merci pour le commentaire, je vais mettre à jour ma réponse.

NON , vous ne pouvez pas pointer un pot ... mais YES , vous pouvez pointer vers la cartographie des fichiers dans le pot.

J'utilise les attributs mappingJarLocations comme pour ainsi tirer dans tous les fichiers * hbm.xml dans un bocal donné:

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

AnnotationSessionFactoryBean joue bien avec les annotations et les fichiers de mappage, btw.

Edit: Je relis certains de ces postes et je tiens également à souligner que vous pouvez réduire des choses répétitives en créant des définitions abstraites de haricots comme ceci:

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

résolu mon problème

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

Il fonctionne pour moi:

<property name="mappingJarLocations">
    <list>
        <value>file:**/yourJarContainHbms.jar</value>
    </list>
</property>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top