• SQL Tutorial
  • JSP
  • Spring
  • PHP
  • Core Java
  • JavaScript
  • Struts
  • Java IO
  • Servlet

  • <

    Hibernate Many-to-Many Mapping


    A Many-to-Many mapping can be implemented using a Set java collection that does not contain any duplicate element.
    A Set is mapped with a element in the mapping table and initialized with java.util.HashSet. You can use Set collection in your class when there is no duplicate element required in the collection.

    Example


    Student.java
    package str;
     
    import java.util.Set;
     
    public class Student {
     
     private int studentId;
     private String studentName;
     private int marks;
     
     private Set courses;
     
     public int getStudentId() {
     return studentId;
     }
     
     public void setStudentId(int studentId) {
     this.studentId = studentId;
     }
     
     public String getStudentName() {
     return studentName;
     }
     
     public void setStudentName(String studentName) {
     this.studentName = studentName;
     }
     
     public int getMarks() {
     return marks;
     }
     
     public void setMarks(int marks) {
     this.marks = marks;
     }
     
     public Set getCourses() {
     return courses;
     }
     
     public void setCourses(Set courses) {
     this.courses = courses;
     }
     
    }
    


    Course.java
    package str;
     
    import java.util.Set;
     
    public class Course {
     
     private int courseId;
     private String courseName;
     private int duration;
     
     private Set students;
     
     public int getCourseId() {
     return courseId;
     }
     
     public void setCourseId(int courseId) {
     this.courseId = courseId;
     }
     
     public String getCourseName() {
     return courseName;
     }
     
     public void setCourseName(String courseName) {
     this.courseName = courseName;
     }
     
     public int getDuration() {
     return duration;
     }
     
     public void setDuration(int duration) {
     this.duration = duration;
     }
     
     public Set getStudents() {
     return students;
     }
     
     public void setStudents(Set students) {
     this.students = students;
     } 
     
    }
    
    

    Student.hbm.xml
    
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping>
    <class name="str.Student" table="student">
     
    <id name="studentId" column="studentid" />
     
    <property name="studentName" column="studentname" length="20"/>
    <property name="marks" />
     
    <set name="courses" cascade="all" table="students_courses">
     
    <key column="student_id "/>
    <many-to-many class="str.Course" column="course_id" />
     
    </set>
     
    </class>
     
    </hibernate-mapping>
    


    Course.hbm.xml

    
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping>
    <class name="str.Course" table="courses">
     
    <id name="courseId" column="courseid" />
     
    <property name="courseName" column="coursename" length="20"/>
    <property name="duration" />
     
    <set name="students" inverse="false" cascade="all" table="students_courses">
     
    <key column="course_id" />
    <many-to-many class="str.Student" column="student_id "/>
     
    </set>
     
    </class>
     
    </hibernate-mapping>
    
    
    

    OurLogic.java

    
    package str;
     
    import java.util.HashSet;
    import java.util.Set;
     
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
     
    public class OurLogic {
     
     public static void main(String args[])
     {
     
     Configuration cfg = new Configuration();
     cfg.configure("hibernate.cfg.xml"); 
     
     SessionFactory factory = cfg.buildSessionFactory();
     Session session = factory.openSession(); 
     
     Student s1=new Student();
     s1.setStudentId(100);
     s1.setStudentName("James");
     s1.setMarks(98);
     
     Student s2=new Student();
     s2.setStudentId(101);
     s2.setStudentName("Lee");
     s2.setMarks(99);
     
     Course c1=new Course();
     c1.setCourseId(500);
     c1.setCourseName("Hibernate");
     c1.setDuration(7);
     
     Course c2=new Course();
     c2.setCourseId(501);
     c2.setCourseName("Java");
     c2.setDuration(30);
     
     Set s =new HashSet();
           s.add(c1);
           s.add(c2);
     
     s1.setCourses(s);
     s2.setCourses(s);
     
         Transaction tx = session.beginTransaction();
     
                           session.save(s1);
                           session.save(s2);
     
         tx.commit();
     
         session.close();
         System.out.println("Many To Many Bi-Directional is Done..!!");
         factory.close();
     
     }
    }
    

    hibernate.cfg.xml

    
    <?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
     
    <hibernate-configuration>
    <session-factory>
    <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver
    </property>
    <property name="connection.url">jdbc:oracle:thin:@www.javatutorialplus.com:1521:XE</property>
    <property name="connection.username">system</property>
    <property name="connection.password">admin</property>
     
    <property name="dialect">org.hibernate.dialect.OracleDialect</property>
    <property name="show_sql">true</property>
    <property name="hbm2ddl.auto">update</property>
     
    <mapping resource="Student.hbm.xml"></mapping>
    <mapping resource="Course.hbm.xml"></mapping>
    </session-factory>
    </hibernate-configuration>
    













    © copyright 2017-2021 Completedone pvt ltd.