如何扫描Hibernate实体的包而不是使用hbm.xml?

bla*_*ank 21 java spring hibernate

我目前使用Spring 3.1和Hibernate 4扫描DAO和服务包<context:component-scan>是否有办法对标记的类执行相同的操作@Entity而不是使用configLocation属性和hbm.xml文件?

<hibernate-configuration>
    <session-factory>
        <mapping class="com.example.model.User" />
            <!-- etc. -->
    </session-factory>
</hibernate-configuration>
Run Code Online (Sandbox Code Playgroud)

Nim*_*sky 37

<bean id="sessionFactory"
  class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"
  p:dataSource-ref="dataSource"
  p:configLocation="WEB-INF/classes/hibernate.cfg.xml"
  p:packagesToScan="com.example.model"
/>
Run Code Online (Sandbox Code Playgroud)

将扫描模型包中的所有内容.我使用cfg.xml包含show_sql和hb2ddl.auto之类的设置.

  • @NimChimpsky你所说的一切都会扫描模型包的所有子包吗? (2认同)
  • 我应该将此 XML 放入哪个/何处文件中。我目前没有 beans.xml 或类似的东西?抱歉,对此很陌生。 (2认同)

Pra*_*mar 19

您可以在应用程序context.xml文件中执行此类操作来扫描所有注释类 -

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="lobHandler" ref="lobHandler"/>
<property name="packagesToScan">
    <list>
        <value>com.idc.scd.domain</value>
        <value>com.idc.scd.domain.dropdown</value>
        <value>com.idc.scd.domain.external</value>
        <value>com.idc.scd.domain.pk</value>
    </list>
</property>
    <property name="hibernateProperties">
      <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
            <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
        <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
        <prop key="hibernate.use_sql_comments">${hibernate.use_sql_comments}</prop>
        <prop key="hbm2ddl.auto">validate</prop>
        <prop key="hibernate.cache.use_query_cache">true</prop>
        <prop key="hibernate.connection.release_mode">after_statement</prop>
        <prop key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</prop>
        <prop key="hibernate.cache.use_second_level_cache">${hibernate.cache.use_second_level_cache}</prop>
        <prop key="hibernate.cache.use_structured_entries">${hibernate.cache.use_structured_entries}</prop>
        <prop key="hibernate.jdbc.fetch_size">${hibernate.jdbc.fetch_size}</prop>
        </props>
    </property>
</bean>
Run Code Online (Sandbox Code Playgroud)