2012-02-13 13 views
10

क्या स्कोप द्वारा hibernate.cfg.xml में ऑब्जेक्ट को परिभाषित करने का कोई तरीका है और एक-एक करके नहीं?हाइबरनेट + स्प्रिंग एमवीसी: ऑब्जेक्ट मैपिंग कॉन्फ़िगरेशन

उदाहरण के लिए, स्प्रिंग में आप सभी नियंत्रकों ऐसे एनोटेशन द्वारा परिभाषित कर सकते हैं:

<context:component-scan base-package="crm.controller" /> 

मैं उसी तरह से हाइबरनेट वर्गों को परिभाषित कर सकते हैं? या इसे एक-एक करके परिभाषित किया जाना चाहिए?

धन्यवाद

+0

संबंधित प्रश्न: http://stackoverflow.com/q/1413190/211197 http://stackoverflow.com/q/2419802/211197 – maksimov

उत्तर

1

यदि आप स्प्रिंग एमवीसी का उपयोग कर रहे हैं, तो आप अपना सत्र फ़ैक्टरी सेट करते समय इसे कॉन्फ़िगर कर सकते हैं। आप HBM फ़ाइलों का उपयोग कर रहे हैं:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="mappingResources"> 
     <list> 
      <value>file1.hbm.xml</value> 
      <value>file2.hbm.xml</value> 
     </list> 
    </property> 
    <property name="hibernateProperties" ref="hibernateProperties"/> 
</bean> 

आप एनोटेट कक्षाएं उपयोग कर रहे हैं:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="packagesToScan" value="com.me.domain"> 
    <property name="hibernateProperties" ref="hibernateProperties"/> 
</bean> 
0

उपयोग करके देखें:

<mapping package="com.mycompany.model" /> 
तत्वों का एक सेट के बजाय

:

<mapping class="com.mycompany.model.EntytyOne" /> 
<mapping class="com.mycompany.model.EntytyTwo" /> 
+0

मुझे – nKognito

+0

के लिए काम नहीं करता आप अधिक जानकारी प्रदान कर सकता है? क्या आपको लॉग में कोई त्रुटि मिलती है? क्या आप उन्हें यहां पेस्ट कर सकते हैं? –

+0

जब मैपिंग पैकेज का उपयोग करता हूं तो यह मुझे एंटिटी नहीं मिला त्रुटि – nKognito

0

तुम ऐसा क्यों की कोशिश न। मैं इस springDAOcontext.xml

में कॉन्फ़िगर किए गए
<bean id="csiSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
    <property name="configLocation"> 
     <value>classpath:hibernate/hibernate.cfg.xml</value> 
    </property> 
    <property name="dataSource" ref="DataSource"/> 

    <property name="mappingResources"> 
     <list> 
      <value>hibernate/*</value> 
        </list> 
        <property> 
0

जहां तक ​​मुझे याद है सकते हैं, "पैकेज-sanning" हाइबरनेट के रूप में यह बाहर के बॉक्स है, का समर्थन नहीं करता अपने डोमेन वर्गों की खोज के लिए।

लेकिन यह देखते हुए कि आप स्प्रिंग एमवीसी के साथ हाइबरनेट को एकीकृत कर रहे हैं, तो आप अपनी कक्षाओं (मानक जेपीए + हाइबरनेट विशिष्ट एनोटेशन) और अपनी स्प्रिंग संदर्भ कॉन्फ़िगरेशन फ़ाइल के भीतर एनोटेटेट कर सकते हैं, उस पैकेज को निर्दिष्ट करें जिसमें हाइबरनेट इकाई वर्ग शामिल हैं। यहाँ कैसे मैं इसे पिछले एक परियोजना में विन्यस्त है:

<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="packagesToScan" value="org.springmvc.domain" /> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop> 
      <prop key="hibernate.hbm2ddl.auto">update</prop> 
      <prop key="show_sql">true</prop> 
      <prop key="log_level">DEBUG</prop> 
     </props> 
    </property> 
</bean> 

"packagesToScan" संपत्ति संकुल कि वसंत इकाई वर्गों की खोज के लिए हाइबरनेट स्कैन होगा परिभाषित करते हैं।

0

im उपयोग जेपीए एनोटेशन @ इकाई, applicationContext.xml का कोड है:

<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="packagesToScan" value="com.yourcompany.module" /> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
      <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> 
     </props> 
    </property> 
</bean> 

पैकेज पथ "com.yourcompany.module" आपका जावा इकाई पैकेज है, उदाहरण के लिए:

package com.yourcompany.module; 
@Entity 
class MyEntity{ 
    private Long id; 
    set get... 
} 
संबंधित मुद्दे