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 имущество. Каждый раз, когда вы добавляете новую сущность в эти пакеты, она автоматически регистрируется.

Другие вопросы по тегам