2012-02-13 24 views
10

Czy istnieje sposób definiowania obiektów w hibernate.cfg.xml według zakresu, a nie pojedynczo?Hibernacja + sprężyna MVC: konfiguracja odwzorowania obiektów

Na przykład, na wiosnę można zdefiniować wszystkie kontrolery taką adnotacją:

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

mogę zdefiniować klasy hibernacji w ten sam sposób? Lub musi być zdefiniowany jeden po drugim?

Dziękuję

+0

Podobne pytania: http://stackoverflow.com/q/1413190/211197 http://stackoverflow.com/q/2419802/211197 – maksimov

Odpowiedz

1

Jeśli używasz Spring MVC, możesz skonfigurować go podczas konfigurowania właściwości sessionFactory. Jeśli używasz HBM pliki:

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

Jeśli używasz adnotacjami klas:

<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

Spróbuj użyć:

<mapping package="com.mycompany.model" /> 

zamiast zestawu elementów:

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

Nie działa na mnie – nKognito

+0

mógłbyś podać więcej szczegółów? Czy pojawia się błąd w dziennikach? Czy mógłbyś je tutaj wkleić? –

+0

Gdy korzystam z pakietu mapowania, otrzymuję komunikat o błędzie Entity not found – nKognito

0

Dlaczego nie spróbować. Mam to skonfigurowane w 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

O ile pamiętam, Hibernate, jak to jest out-of-the box, nie obsługuje „pakiet-sanning”, aby odkryć swoje zajęcia domen.

Jednak biorąc pod uwagę fakt, że integrujesz Hibernate ze Spring MVC, możesz opisywać swoje klasy (standardowe adnotacje JPA + Hibernate), a w pliku konfiguracyjnym kontekstu Spring określić pakiet zawierający klasy elementów Hibernacji. Oto jak ja skonfigurowane w poprzednim projekcie:

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

W „packagesToScan” własność określić pakiety, które będą miały Wiosna hibernacji skanowanie do odkrycia klas podmiotu.

0

im wykorzystanie JPA adnotacji @Entity, kod applicationContext.xml jest:

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

Ścieżka do pakietu "com.yourcompany.module" to pakiet encji Javy, na przykład:

package com.yourcompany.module; 
@Entity 
class MyEntity{ 
    private Long id; 
    set get... 
} 
Powiązane problemy