Hibernate: Mappatura many to many (xml)

Many-to-many  si ha quando un record di una tabella può essere collegato con tanti record su un altra tabella,e viceversa. 

ogni PERSONA può avere più CONTICORRENTI  e ogni CONTOCORRENTE può appartanere a più PERSONE.


File : Persona.java
package com.prova;
 import java.util.HashSet;
import java.util.Set;
 public class Persona implements java.io.Serializable {
  private Integer personaId;
private Set<ContoCorrente> contiCorrenti= new HashSet<ContoCorrente>(0);
  //getter, setter and constructor
}

File : ContoCorrente.java
package com.prova; 
import java.util.HashSet;
import java.util.Set;
 public class ContoCorrente implements java.io.Serializable {
  private Integer contoCorrenteId;
private Set<Persona> persone= new HashSet<Persone>(0);
  //getter, setter and constructor
}


File : Persona.hbm.xml
    <class name=”com.prova.Persona” table=”persona” catalog=”provadb”>
        <id name=”personaId” type=”java.lang.Integer”>
            <column name=”PERSONA_ID” />
            <generator class=”identity” />
        </id>
        <set name=”conticorrenti” table=”unione” 
         inverse=”false” lazy=”true” fetch=”select” cascade=”all” >
            <key>
                <column name=”PERSONA_ID” not-null=”true” />
            </key>
            <many-to-many entity-name=”com.prova.ContoCorrente”>
                <column name=”CONTO_CORRENTE_ID” not-null=”true” />
            </many-to-many>
        </set>
    </class>
</hibernate-mapping>




File : ContoCorrente.hbm.xml
<hibernate-mapping>
    <class name=”com.prova.ContoCorrente” table=”contocorrente” catalog=”mkyongdb”>
        <id name=”contoCorrenteId” type=”java.lang.Integer”>
            <column name=”CONTO_CORRENTE_ID” />
            <generator class=”identity” />
        </id>
       <set name=”persone” table=”unione” inverse=”true” lazy=”true” fetch=”select”>
            <key>
                <column name=”CONTO_CORRENTE_ID” not-null=”true” />
            </key>
            <many-to-many entity-name=”com.prova.Persona”>
                <column name=”PERSONA_ID” not-null=”true” />
            </many-to-many>
        </set>
    </class>
</hibernate-mapping>


Testiamo il tutto

File : App.java
public class App {
public static void main(String[] args) {
        System.out.println(“Hibernate many to many (XML Mapping)”);
Session session = HibernateUtil.getSessionFactory().openSession();
  session.beginTransaction();
  Persona persona = new Persona();
        ContoCorrente contoCorrente1 = new ContoCorrente ();
        ContoCorrente  contoCorrente2= new ContoCorrente ();
        Set<ContoCorrente > contoCorrenti= new HashSet<ContoCorrente >();
        contoCorrenti.add(contoCorrente1 );
        contoCorrenti.add(contoCorrente1 );
        persona.setContiCorrenti(contoCorrenti);
        session.save(persona);
  session.getTransaction().commit();
System.out.println(“Done”);
}
}

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *