2012-02-13 17 views
10

¿Hay alguna manera de definir objetos en hibernate.cfg.xml por alcance y no uno por uno?Hibernate + Spring MVC: configuración de asignación de objetos

Por ejemplo, en la primavera se pueden definir todos los controladores por dicha anotación:

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

¿Puedo definir clases de hibernación de la misma manera? ¿O debe definirse uno por uno?

Gracias

+0

preguntas relacionadas: http://stackoverflow.com/q/1413190/211197 http://stackoverflow.com/q/2419802/211197 – maksimov

Respuesta

1

Si está utilizando Spring MVC, puede configurarlo al configurar su sessionFactory. Si está utilizando archivos de 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> 

si está utilizando clases anotadas:

<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

Trate de usar:

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

en lugar de un conjunto de elementos:

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

No funciona para mí – nKognito

+0

Podría dar más detalles? ¿Obtiene algún error en los registros? ¿Podrías pegarlos aquí tal vez? –

+0

Cuando uso el paquete de asignación me da error de Entidad no encontrada – nKognito

0

¿Por qué no probar esto. esto he configurado en 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

Por lo que yo puedo recordar, Hibernate, ya que es fuera de la caja, no es compatible con "paquete-Sanning" para descubrir sus clases de dominio.

Pero dado que está integrando Hibernate con Spring MVC, puede anotar sus clases (anotaciones específicas estándar JPA + Hibernate) y dentro de su archivo de configuración de contexto Spring, especifique el paquete que contiene las clases de entidad Hibernate. He aquí cómo configurarlo en un proyecto anterior:

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

La propiedad "packagesToScan" definen los paquetes que la primavera tendrá exploración de hibernación para descubrir las clases de entidad.

0

im uso JPA anotación @Entity, el código de applicationContext.xml es:

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

La ruta del paquete "com.yourcompany.module" es su paquete de entidad java, por ejemplo:

package com.yourcompany.module; 
@Entity 
class MyEntity{ 
    private Long id; 
    set get... 
} 
Cuestiones relacionadas