在我的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>
答案 0 :(得分:24)
您可以通过转换来进一步简化事情
<property name="annotatedClasses">
<list>
<value>com.mycompany.sample.domain.Order</value>
<value>com.mycompany.sample.domain.LineItem</value>
...
</list>
</property>
到
<property name="packagesToScan" value="com.mycompany.sample.domain" />
在AnnotationSessionFactoryBean
中,所以现在所有在@Entity
包中注明com.mycompany.sample.domain
的课程都会自动获取。
答案 1 :(得分: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>
如果您使用的是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>
答案 2 :(得分:5)
你可以在你的类上使用注释,但对于Hibernate,我不确定是否有内置的东西(在Spring中使用)。如果您想要避免更多技术,This thread应该会有所帮助,但您也可以使用Java Persistence Annotations(JPA)与Hibernate协同工作来实现相同的目标。
Here's使用JPA + Hibernate + Spring的好教程。
答案 3 :(得分:3)
e.g。来自文档:
@Entity
public class Flight implements Serializable {
Long id;
@Id
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
}
所以除了@Pascal Thivent所提到的,你应该得到你需要的一切。