2

休止状態のマッピング hbm.xml を jar に埋め込み、applicationContext.xml での手動参照を避けることは可能ですか?

  <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

それをjar / etcに向けますか?
Nhibernate には、hbm を取得する場所からアセンブリを指すオプションがあります。
注釈はオプションではありません

編集: 編集:私の意図は、hbmへの手動参照を削除し、休止状態がそれを拾うことができる一般的な場所を指すことです

  <list>
    <value>
      com/.../Question.hbm.xml
    </value>
    <value>com/.../Users.hbm.xml</value>
    <value>
      com/.../Answers.hbm.xml
    </value>
4

5 に答える 5

6

明確にするためにも、ここでは、SpringとHibernateについて一緒に話しているのです。これは、表示している構成がSpringのHibernateの構成であるためです。Spring'sLocalSessionFactoryBeanは、Hibernateマッピングファイルの場所を設定するためのさまざまな方法を受け入れます。mappingResourcesパラメータを使用して表示するだけですが、、、、もありmappingLocationsます。mappingJarLocationsmappingDirectoryLocations

あなたの例ではmappingDirectoryLocations、JAR内の特定のディレクトリ(次のようなもの)を使用してポイントすることをお勧めします。

<property name="mappingDirectoryLocations">
      <list>
        <value>
          com/…/domain/
        </value>
      </list>
</property>
于 2009-12-16T18:15:12.197 に答える
2

はい、できます。デフォルトでは、Spring はマッピング ファイルを検索するときにクラス パスから移動します。そのため、jar がクラス パス上にある場合、Hibernate マッピング ファイルがローカル セッション ファクトリ Bean に含まれる問題はありません。

したがって、マッピング ファイルが my.spring.package にあり、mapping.xml という名前の場合、パスは

my/spring/package/mapping.xml

うまくいくはずです。

編集

コメントをありがとう、私は私の答えを更新します。

いいえ、jar を指すことはできません... しかし、はい、jar 内のマッピング ファイルを指すことができます。

于 2009-12-16T18:02:59.723 に答える
1

次のように mappingJarLocations 属性を使用して、特定の jar 内のすべての *hbm.xml ファイルを取り込みます。

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

AnnotationSessionFactoryBean は、注釈とマッピング ファイルでうまく機能します。

編集:これらの投稿のいくつかを再読しましたが、次のような抽象的な Bean 定義を作成することで、反復的なものを削減できることも指摘したいと思います。

<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">
    ...
于 2009-12-16T18:27:40.170 に答える
1

これは私の問題を解決しました

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

于 2015-11-11T03:43:24.603 に答える
0

わたしにはできる:

<property name="mappingJarLocations">
    <list>
        <value>file:**/yourJarContainHbms.jar</value>
    </list>
</property>
于 2013-01-14T08:46:40.913 に答える