класс отображения spring+hibernate без xml
в моем 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>
4 ответов
и вы можете еще больше упростить вещи, конвертируя
<property name="annotatedClasses">
<list>
<value>com.mycompany.sample.domain.Order</value>
<value>com.mycompany.sample.domain.LineItem</value>
...
</list>
</property>
to
<property name="packagesToScan" value="com.mycompany.sample.domain" />
в своем AnnotationSessionFactoryBean
Итак, теперь все классы аннотированы @Entity
на com.mycompany.sample.domain
пакет будет автоматически подобрали.
вместо использования файлов сопоставления XML можно использовать Hibernate Аннотации библиотека, основанная на аннотациях Java 5.
как обычно, вам нужно будет объявить классы сохраняемости в файле конфигурации 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 framework, вы можете настроить фабрику сеансов гибернации на основе аннотаций с помощью AnnotationSessionFactoryBean
класс, как показано ниже:
<!-- 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>
вы можете использовать аннотации в своем классе, хотя для Hibernate я не уверен, что есть что-то встроенное (для использования весной). этой теме должно помочь, если yo хочет избежать еще больше технологий, но вы также можете использовать Java Persistence Annotations (JPA) совместно с Hibernate для достижения той же цели.
здесь хороший учебник по использованию JPA + Hibernate + Spring.
@Pascal Thivent дает очень хорошее начало тому, что вы хотите сделать. Для каждого класса Entity вам нужно будет их аннотировать. Это документы, которые expalin в Hibernate аннотации.
например, из документов:
@Entity
public class Flight implements Serializable {
Long id;
@Id
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
}
таким образом, в дополнение к тому, что было упомянуто @Pascal Thivent, вы должны получить все, что вам нужно.