Spring и Hibernate: функция аннотированных классов и пакетов ToScan
Я прочитал основные материалы Spring Documentation, но сроки ограничивали мое чтение. Приложение Spring Hibernate работает. Однако я не уверен насчет некоторых внутренних механизмов.
Может кто-нибудь объяснить, как функционирует annotatedClasses, зачем он нам нужен, а также карта классов гибернации, а также как ее функция отличается от пакетов для сканирования?
<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 ответ
annotatedClass
определяет аннотированные классы сущностей для регистрации в этом Hibernate SessionFactory. При таком подходе вы должны зарегистрировать все объекты, помеченные @Entity
вручную, что не является масштабируемым решением. Лучшим подходом будет указание имен аннотированных пакетов (в отличие от отдельных классов) путем packagesToScan
имущество. Каждый раз, когда вы добавляете новую сущность в эти пакеты, она автоматически регистрируется.