10
votes

Spring + Hibernate Cartographie de la classe sans XML

dans mon applicationContext.xml, voici comment je mappe XML à Pojo. Comment mapper le répertoire vers le fichier de classe sans être nécessaire pour créer 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 commentaires

4 Réponses :


17
votes

au lieu d'utiliser des fichiers de mappage XML, vous pouvez utiliser le Annotations Hibernate bibliothèque basée sur Java 5 annotations.

Comme d'habitude, vous devez déclarer vos classes de persistance dans le fichier de configuration Hibernate (typiquement hibernate.cfg.xml code>), bien que vous utilisiez le code> code> élément de déclarer vos classes persistantes: p>

p> xxx pré>

Si vous utilisez la structure de ressort, vous pouvez configurer une usine de session hibernate basée sur Annotation à l'aide de la AnnotationSetSetoryBean Code> Classe, comme indiqué ici: P>

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


1 commentaires

Votre déclaration de haricots doit être placée dans le contexte de Disternerservlet? Ou dans un autre fichier de configuration-cadre de printemps? Et aussi quand j'ai déclaré mes cours de persistance dans hibernate.cfg.xml) Devrais-je également créer une usine de session hibernate basée sur Annotation à la sécurité du printemps?



5
votes

Vous pouvez utiliser des annotations sur votre classe, cependant pour Hibernate, je ne suis pas sûr qu'il y ait quelque chose d'introduit (à utiliser au printemps). Ce fil devrait aider si vous voulez éviter toute technologie, mais vous pouviez Utilisez également des annotations de la persistance Java (JPA) de concert avec Hibernate pour accomplir le même objectif.

Voici un bon tutoriel pour Utilisation de JPA + Hibernate + Spring.


0 commentaires

3
votes

@pascal thivent donne un très bon début à ce que vous voulez faire. Pour chaque classe d'entité, vous devrez les annoter. Ceci est le docs qui expalin the Annotations dans Hibernate .

E.g. De la DOCS: P>

   @Entity
  public class Flight implements Serializable {
    Long id;

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

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


0 commentaires

24
votes

et vous pouvez également simplifier les choses en convertissant xxx

à xxx

dans votre AnnotationSetoryBean alors maintenant maintenant Toutes les classes annotées avec @entity dans le package com.mycompany.sample.domain seront automatiquement ramassés.


3 commentaires

Que devrais-je convertir la cartographie des cours dans mon annotationsessorybean?


@Jiayizhou pouvez-vous élaborer, je ne reçois pas tout à fait ce que vous demandez.


Si dans l'une de mes entité, j'ajoute une propriété que l'onetoone mappage vers une autre entité. Que dois-je ajouter dans la configuration XML-cadre de printemps pour le faire fonctionner? Vous pouvez vérifier les détails de ma question ici: Stackoverflow.com/questions/40956208/...