2009-10-31 16 views
9

w moim applicationContext.xml, w ten sposób mapuję xml na POJO. jak mapować katalog do pliku klasy bez konieczności tworzenia xml?Spring + hibernacja klasa mapowania bez 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> 

Odpowiedz

23

I można dodatkowo uprościć poprzez przekształcenie

<property name="annotatedClasses"> 
    <list> 
     <value>com.mycompany.sample.domain.Order</value> 
     <value>com.mycompany.sample.domain.LineItem</value> 
     ... 
    </list> 
</property> 

do

<property name="packagesToScan" value="com.mycompany.sample.domain" /> 

w AnnotationSessionFactoryBean więc teraz wszystkie klasy z adnotacją @Entity w pakiecie com.mycompany.sample.domain zostanie automatycznie podniósł.

+0

Co powinienem przekonwertować mapowanie klas na moje AnnotationSessionFactoryBean? –

+0

@JiayiZhou Czy możesz rozwinąć, nie rozumiem, o co prosisz. –

+0

Jeśli w jednym z moich obiektów dodaję właściwość mapowania OneToOne do innej jednostki. Co powinienem dodać w konfiguracji XML xml, aby działał? Możesz sprawdzić szczegóły mojego pytania tutaj: http://stackoverflow.com/questions/40956208/how-to-configure-hibernate-onetoone-mapping-using-spring-framework –

17

Zamiast plików odwzorowań XML, można użyć biblioteki Hibernate Annotations który jest oparty na Java 5 adnotacje.

Jak zwykle trzeba zadeklarować klas wytrwałość w pliku konfiguracji hibernacji (zazwyczaj hibernate.cfg.xml), choć należy użyć elementu <mapping> zadeklarować swoje trwałe klas:

<hibernate-configuration> 
     <session-factory> 
     <mapping class="com.mycompany.sample.domain.Order"/> 
     <mapping class="com.mycompany.sample.domain.LineItem"/> 
     </session-factory> 
    </hibernate-configuration> 

Jeśli używasz struktury Spring, możesz skonfigurować fabułę sesji hibernacji opartą na adnotacjach, używając klasy AnnotationSessionFactoryBean, jak pokazano poniżej:

<!-- 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> 
+0

Twoja deklaracja fasoli powinna być umieszczona w kontenerze DispatcherServlet? Lub w innym pliku konfiguracyjnym Spring Framework? A także, kiedy zadeklarowałem moje klasy trwałości w hibernate.cfg.xml), czy powinienem również skonfigurować fabrykę sesji Hibernate opartą na adnotacji w Spring Security? – woyaru

5

Możesz używać adnotacji na swojej klasie, ale dla Hibernate nie jestem pewien, czy coś jest wbudowane (do użytku na wiosnę). This thread powinien pomóc, jeśli chcesz uniknąć jeszcze większej ilości technologii, ale możesz również użyć Java Adnotacje adnotacji (JPA) w połączeniu z Hibernate, aby osiągnąć ten sam cel.

Here's dobry samouczek do używania JPA + Hibernate + Spring.

3

@Pascal Thivent daje bardzo dobry początek tego, co chcesz robić. Dla każdej klasy Entity musisz ją opatrzyć adnotacją. To jest dokument, który expalin annotations in Hibernate.

np. Od dokumentów:

@Entity 
    public class Flight implements Serializable { 
    Long id; 

    @Id 
    public Long getId() { return id; } 

    public void setId(Long id) { this.id = id; } 
    } 

Więc oprócz tego, o czym wspomniał @Pascal Thivent, powinieneś otrzymać wszystko, czego potrzebujesz.

Powiązane problemy