没有xml的spring + hibernate映射类

com*_*tta 10 java orm spring hibernate

在我的applicationContext.xml中,这就是我将xml映射到POJO的方式.如何将目录映射到类文件而无需创建xml?

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="mappingResources">
            <list>
                <value>com/custompackage/custom/spi/hibernate3/HibernateCurrentStep.hbm.xml</value>
                <value>com/custompackage/custom/spi/hibernate3/HibernateHistoryStep.hbm.xml</value>
                 <value>com/custompackage/custom/spi/hibernate3/HibernatecustomEntry.hbm.xml</value>
                  <value>user/custom/hibernate3/PropertySetItemImpl.hbm.xml</value>
                   <value>com/custompackage/user/provider/hibernate3/user/impl/HibernateGroupImpl.hbm.xml</value>
                   <value>com/custompackage/user/provider/hibernate3/user/impl/HibernateUserImpl.hbm.xml</value>
            </list>
        </property>


        <property name="hibernateProperties">
            .....
        </property>
        <property name="dataSource">
            <ref bean="dataSource" />
        </property>

    </bean>
Run Code Online (Sandbox Code Playgroud)

non*_*tor 24

您可以通过转换进一步简化事情

<property name="annotatedClasses">
     <list>
       <value>com.mycompany.sample.domain.Order</value>
       <value>com.mycompany.sample.domain.LineItem</value>
       ...
     </list>
 </property>
Run Code Online (Sandbox Code Playgroud)

<property name="packagesToScan" value="com.mycompany.sample.domain" />
Run Code Online (Sandbox Code Playgroud)

在你的AnnotationSessionFactoryBean所以现在所有@Entitycom.mycompany.sample.domain包中注释的类将被自动拾取.


Pas*_*ent 17

您可以使用基于Java 5注释的Hibernate Annotations库,而不是使用XML映射文件.

像往常一样,您需要在Hibernate配置文件(通常hibernate.cfg.xml)<mapping>中声明持久性类,尽管您使用该元素来声明持久化类:

    <hibernate-configuration>
      <session-factory>
        <mapping class="com.mycompany.sample.domain.Order"/>
        <mapping class="com.mycompany.sample.domain.LineItem"/>
      </session-factory>
    </hibernate-configuration>
Run Code Online (Sandbox Code Playgroud)

如果您使用的是Spring框架,则可以使用AnnotationSessionFactoryBean该类设置基于注释的Hibernate会话工厂,如下所示:

  <!-- Hibernate session factory -->
  <bean id="sessionFactory" 
        class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
   <property name="dataSource">
     <ref bean="dataSource"/>
   </property>
   <property name="hibernateProperties">
     <props>
       <prop key="hibernate.dialect">org.hibernate.dialect.DerbyDialect</prop>
       <prop key="hibernate.hbm2ddl.auto">create</prop>
       ...
     </props>
   </property>
   <property name="annotatedClasses">
     <list>
       <value>com.mycompany.sample.domain.Order</value>
       <value>com.mycompany.sample.domain.LineItem</value>
       ...
     </list>
   </property>
 </bean>
Run Code Online (Sandbox Code Playgroud)


Mar*_*iot 5

你可以在你的类上使用注释,但对于Hibernate,我不确定是否有内置的东西(在Spring中使用).如果您想要避免使用更多技术,这个线程应该会有所帮助,但您也可以使用Java Persistence Annotations(JPA)与Hibernate协同工作来实现相同的目标.

这是一个使用JPA + Hibernate + Spring的好教程.