有什么方法可以按范围在hibernate.cfg.xml中定义对象而不是逐个定义?
例如,在Spring中,您可以通过这样的注释定义所有控制器:
<context:component-scan base-package="crm.controller" />
我可以用同样的方式定义hibernate类吗?或者它必须逐个定义?
谢谢
答案 0 :(得分:1)
如果您使用的是Spring MVC,则可以在设置sessionFactory时对其进行配置。如果您使用的是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>
答案 1 :(得分:0)
尝试使用:
<mapping package="com.mycompany.model" />
而不是一组元素:
<mapping class="com.mycompany.model.EntytyOne" />
<mapping class="com.mycompany.model.EntytyTwo" />
答案 2 :(得分: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>
答案 3 :(得分:0)
据我所知,Hibernate开箱即用,不支持“打包扫描”来发现你的域类。
但鉴于您正在将Hibernate与Spring MVC集成,您可以注释您的类(标准JPA + Hibernate特定注释),并在Spring上下文配置文件中指定包含Hibernate实体类的包。以下是我在之前项目中配置它的方法:
<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”属性定义Spring将对Hibernate进行扫描以发现实体类的包。
答案 4 :(得分:0)
我使用jpa annotation @ Entity,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”是您的java实体包,例如:
package com.yourcompany.module;
@Entity
class MyEntity{
private Long id;
set get...
}