Frage

Ist es möglich, die Hibernate -Mapping -HBM.xml in das Glas einzubetten und eine manuelle Referenz in applicationContext.xml zu vermeiden

  <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

und auf ein Glas/etc hinweisen?
Nhibernate hat eine solche Option, auf eine Baugruppe zu verweisen, von der sie die HBMs abholen.
Anmerkungen sind keine Option

Bearbeiten:Bearbeiten: Meine Absicht ist es, die manuelle Referenz zu HBMs zu entfernen und auf einen generischen Ort zu verweisen, an dem Hibernate ihn abholen kann

  <list>
    <value>
      com/.../Question.hbm.xml
    </value>
    <value>com/.../Users.hbm.xml</value>
    <value>
      com/.../Answers.hbm.xml
    </value>
War es hilfreich?

Lösung

Nur um zu klären: Sie sprechen speziell über Frühling und Winterschlaf zusammen, da die Konfiguration, die Sie zeigen, die Konfiguration von Winterschlaff in der Spring -Hibernate ist. Frühling LocalSessionFactoryBean Akzeptiert eine Vielzahl verschiedener Möglichkeiten, um den Speicherort Ihrer Hibernate -Mapping -Dateien festzulegen. Sie zeigen nur mit dem mappingResources Parameter, aber es gibt auch mappingLocations, mappingJarLocations, und mappingDirectoryLocations.

Ich würde denken, dass Sie für Ihr Beispiel vielleicht verwenden möchten mappingDirectoryLocations und verweisen Sie einfach auf ein bestimmtes Verzeichnis in Ihrem Glas, wie z. B.:

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

Andere Tipps

Ja, Sie können standardmäßig den Klassenpfad bei der Suche nach Zuordnungsdateien aus dem Klassenpfad gehen. Wenn sich das JAR auf Ihrem Klassenpfad befindet, sollte die Dateien nicht ein Problem für die Hibernate -Mapping -Dateien finden, die in Ihre lokale Sitzungsfabrikbean enthalten sind.

Wenn sich Ihre Zuordnungsdatei also in my.spring.package befindet und maping.xml heißt, der Pfad

my/spring/package/mapping.xml

sollte gut funktionieren.

BEARBEITEN

Danke für den Kommentar, ich werde meine Antwort aktualisieren.

NEIN, du kannst nicht auf ein Glas zeigen ... aber JAWOHL, Sie können auf die Zuordnung von Dateien im Glas verweisen.

Ich verwende das Attribut mapingjarlocations wie so, um alle *Hbm.xml -Dateien in einem bestimmten Glas einzugeben:

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

Anmerkungen

Bearbeiten: Ich habe einige dieser Beiträge erneut gelesen und möchte auch darauf hinweisen, dass Sie sich wiederholende Dinge reduzieren können, indem Sie abstrakte Bean-Definitionen wie SO erstellen:

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

Dies löste mein Problem

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

Für mich geht das:

<property name="mappingJarLocations">
    <list>
        <value>file:**/yourJarContainHbms.jar</value>
    </list>
</property>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top