سؤال

هل من الممكن تضمين تعيين السبات HBM.xml إلى جرة وتجنب المرجع اليدوي في 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

وأشرها إلى جرة / إلخ؟
يحتوي Nibernate على مثل هذا الخيار الإشارة إلى تجميع، من حيث يختار UPS HBM.
التعليقات التوضيحية ليست خيارا

تعديل:تحرير: نيتي هي إزالة الإشارة اليدوية إلى HBM وأشر إلى موقع عام من حيث يمكن أن تسطب السبات

  <list>
    <value>
      com/.../Question.hbm.xml
    </value>
    <value>com/.../Users.hbm.xml</value>
    <value>
      com/.../Answers.hbm.xml
    </value>
هل كانت مفيدة؟

المحلول

فقط للتوضيح، كذلك: أنت تتحدث على وجه التحديد عن الربيع والإسبات معا، نظرا لأن التكوين الذي تظهر عليه هو تكوين الربيع في السبات. الربيع LocalSessionFactoryBean يقبل العديد من الطرق المختلفة لتعيين موقع ملفات تعيين السبات الخاصة بك؛ تظهر فقط باستخدام mappingResources المعلمة، ولكن هناك أيضا mappingLocations, mappingJarLocations, ، و mappingDirectoryLocations.

أعتقد أنه من أجل مثالك، قد ترغب في استخدامه mappingDirectoryLocations وفقط توجيهها إلى دليل معين داخل جرة الخاص بك، مثل:

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

نصائح أخرى

نعم، يمكنك، بشكل افتراضي، ينتقل الربيع من مسار الفصل عند البحث عن ملفات التعيين. لذلك إذا كانت الجرة موجودة على مسار الفصل الدراسي الخاص بك، فينبغي أن تجد الملفات لا توجد مشكلة في ملفات تعيين السبات المراد تضمينها في فول مصنع الدورة المحلية الخاصة بك.

لذلك إذا كان ملف التعيين الخاص بك في my.spring.package ويسمى Mapping.xml، المسار

my/spring/package/mapping.xml

يجب أن تعمل على ما يرام.

تعديل

شكرا على التعليق، وسوف أقوم بتحديث جوابي.

لا, ، لا يمكنك الإشارة إلى جرة ... ولكن نعم, ، قد تشير إلى تعيين الملفات في الجرة.

يمكنني استخدام سمة mp3worjarlocations مثل سحب جميع ملفات hbm.xml في جرة معينة:

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

SinglineFosessionSorybean يلعب لطيف مع التعليقات التوضيحية ورسم الخرائط، راجع للشغل.

تحرير: أعد قراءة بعض المشاركات وأريد أيضا الإشارة إلى أنه يمكنك خفض الأشياء المتكررة عن طريق إنشاء تعريفات حبة مجردة مثل ذلك:

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

هذا حل مشكلتي

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

يعمل بالنسبة لي:

<property name="mappingJarLocations">
    <list>
        <value>file:**/yourJarContainHbms.jar</value>
    </list>
</property>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top