Spring和Hibernate:annotatedClasses和packagesToScan的功能

时间:2015-08-06 04:20:07

标签: spring hibernate sessionfactory

我已阅读Spring文档的实质内容,但截止日期限制了我的阅读。我的Spring Hibernate应用程序正在运行。但是我不确定一些内在的机制。

有人可以解释annotatedClasses如何运作,为什么我们需要它以及hibernate类映射以及它的函数与包扫描的不同之处?

<bean id="sfhbmSessionFactory"
		class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="annotatedClasses">
			<list>
				<value>com.prototype2.model.user.IdentityInformation</value>
				     <value>com.prototype2.model.user.IdentityInformationType</value>
				<value>com.prototype2.model.user.User</value>
				<value>com.prototype2.model.user.UserChild</value>
				<value>com.prototype2.model.user.UserMain</value>
		........  
			</list>
		</property>
		<property name="mappingResources">
			<list>
				<value>hibernatemap.cfg.xml</value>
			</list>
		</property>



		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
				<prop key="temp.use_jdbc_metadata_defaults">false</prop>
				<prop key="hibernate.archive.autodetection">class</prop>
				<prop key="show_sql">true</prop>
				<prop key="hibernate.format_sql">true</prop>
				<prop key="hibernate.enable_lazy_load_no_trans">true</prop>
			</props>
		</property>


		<property name="packagesToScan">
			<array>
				<value>com.prototype2.model.assessment</value>
				<value>com.prototype2.model.user</value>
				<value>com.prototype2.model.scores</value>
				<value>com.prototype2.model.business</value>
				<value>com.prototype2.dao.factory</value>
				<value>com.prototype2.dao.user</value>
			</array>
		</property>
	</bean>

1 个答案:

答案 0 :(得分:3)

annotatedClass指定要在此Hibernate SessionFactory中注册的带注释的实体类。使用此方法,您应该手动注册所有使用@Entity注释的实体,这不是可扩展的解决方案。更好的方法是通过packagesToScan属性指定带注释的的名称(而不是单个)。无论何时向这些包添加新实体,都将自动注册。