AssociationsAgenda
Associations :One to Many mapping :
package com.beans; import java.util.Set; public class Student { private int studentId; private String stuentName; private Set courses; public int getStudentId() { return studentId; } public void setStudentId(int studentId) { this.studentId = studentId; } public String getStuentName() { return stuentName; } public void setStuentName(String stuentName) { this.stuentName = stuentName; } public Set getCourses() { return courses; } public void setCourses(Set courses) { this.courses = courses; } }Course.java package com.beans; public class Course { private int courseId; private String courseName; 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; } }Student.hbm.xml <hibernate-mapping> <class name="com.beans.Student" table="STUDENTDB"> <id name="studentId" column="SID"/> <property name="stuentName" column="SNAME" length="15"/> <set name="courses" cascade="all"> <key column="refSID"/> <one-to-many class="com.beans.Course"/> </set> </class> </hibernate-mapping>Course.hbm.cml <hibernate-mapping> <class name="com.beans.Course" table="COURSEDB"> <id name="courseId" column="CID"/> <property name="courseName" column="CNAME" length="15"/> </class> </hibernate-mapping>hibernate.cfg.xml <hibernate-configuration> <session-factory> <!-- Related to the connection properties --> <property name="myeclipse.connection.profile">myJdbcDriver</property> <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <property name="connection.url">jdbc:oracle:thin:@localhost:1521:xe</property> <property name="connection.username">lms</property> <property name="connection.password">scott</property> <!-- Related to the hibernate properties --> <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property> <property name="show_sql">true</property> <property name="hbm2ddl.auto">create</property> <!-- Related to hibernate mapping --> <mapping resource="com/hiber/Student.hbm.xml" /> <mapping resource="com/hiber/Course.hbm.xml" /> </session-factory> </hibernate-configuration> Client Application 1 :package com.client; 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; import com.beans.Course; import com.beans.Student; public class ClientApp { public static void main(String ar[]){ Configuration cfg=new Configuration(); cfg.configure(); SessionFactory sf=cfg.buildSessionFactory(); Session session=sf.openSession(); Transaction tx=session.beginTransaction(); Student student=new Student(); student.setStudentId(1); student.setStuentName("Ashok"); Course course=new Course(); course.setCourseId(21); course.setCourseName("hibernate"); Course course2=new Course(); course2.setCourseId(22); course2.setCourseName("spring"); Set set=new HashSet(); set.add(course); set.add(course2); student.setCourses(set); session.save(student); tx.commit(); System.out.println("success"); } } Client Application 2 :Note :package com.client; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.beans.Course; import com.beans.Student; public class ClientApp { public static void main(String ar[]){ Configuration cfg=new Configuration(); cfg.configure(); SessionFactory sf=cfg.buildSessionFactory(); Session session=sf.openSession(); Student student=(Student)session.get(Student.class, 1); System.out.println(student.getStudentId()); System.out.println(student.getStuentName()); Set set=student.getCourses(); Iterator iterator=set.iterator(); while(iterator.hasNext()){ Course course=(Course)iterator.next(); System.out.println(course.getCourseId()); System.out.println(course.getCourseName()); } System.out.println("success"); } } Client Application 3 :package com.client; import java.util.Iterator; import java.util.List; import java.util.Set; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import com.beans.Course; import com.beans.Student; public class ClientApp { public static void main(String ar[]){ Configuration cfg=new Configuration(); cfg.configure(); SessionFactory sf=cfg.buildSessionFactory(); Session session=sf.openSession(); String hqlQuery="from Student"; Query query=session.createQuery(hqlQuery); List list=query.list(); Iterator iterator=list.iterator(); while(iterator.hasNext()){ Student student=(Student)iterator.next(); System.out.println(student.getStudentId()); System.out.println(student.getStuentName()); Set set=student.getCourses(); Iterator iterator2=set.iterator(); while(iterator2.hasNext()){ Course course=(Course)iterator2.next(); System.out.println(course.getCourseId()); System.out.println(course.getCourseName()); } } System.out.println("success"); } } Client Application 4 :package com.client; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.beans.Student; public class ClientApp { public static void main(String ar[]){ Configuration cfg=new Configuration(); cfg.configure(); SessionFactory sf=cfg.buildSessionFactory(); Session session=sf.openSession(); Transaction tx=session.beginTransaction(); Student student=(Student)session.get(Student.class, 1); session.delete(student); tx.commit(); System.out.println("success"); } } Client Application 5 :package com.client; import java.util.Iterator; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.beans.Student; public class ClientApp { public static void main(String ar[]){ Configuration cfg=new Configuration(); cfg.configure(); SessionFactory sf=cfg.buildSessionFactory(); Session session=sf.openSession(); Transaction tx=session.beginTransaction(); String hqlQuery="from Student"; Query query=session.createQuery(hqlQuery); List list=query.list(); Iterator iterator=list.iterator(); while(iterator.hasNext()){ Student student=(Student)iterator.next(); session.delete(student); } tx.commit(); System.out.println("success"); } } Many to One mapping :
Student.java package com.beans; public class Student { private int studentId; private String stuentName; public int getStudentId() { return studentId; } public void setStudentId(int studentId) { this.studentId = studentId; } public String getStuentName() { return stuentName; } public void setStuentName(String stuentName) { this.stuentName = stuentName; } }Course.java package com.beans; public class Course { private int courseId; private String courseName; private Student student; 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 Student getStudent() { return student; } public void setStudent(Student student) { this.student = student; } }Student.hbm.xml <!-- Related to hibernate mapping for POJO --> <hibernate-mapping> <class name="com.beans.Student" table="STUDENTDB"> <id name="studentId" column="SID"/> <property name="stuentName" column="SNAME" length="15"/> </class> </hibernate-mapping>Course.hbm.xml <!-- Related to hibernate mapping for POJO --> <hibernate-mapping> <class name="com.beans.Course" table="COURSEDB"> <id name="courseId" column="CID"/> <property name="courseName" column="CNAME" length="15"/> <many-to-one name="student" column="refSID" class="com.beans.Student" cascade="all"/> </class> </hibernate-mapping>hibernate.cfg.xml <hibernate-configuration> <session-factory> <!-- Related to the connection properties --> <property name="myeclipse.connection.profile">myJdbcDriver</property> <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <property name="connection.url">jdbc:oracle:thin:@localhost:1521:xe</property> <property name="connection.username">lms</property> <property name="connection.password">scott</property> <!-- Related to the hibernate properties --> <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property> <property name="show_sql">true</property> <property name="hbm2ddl.auto">create</property> <!-- Related to hibernate mapping --> <mapping resource="com/hiber/Student.hbm.xml" /> <mapping resource="com/hiber/Course.hbm.xml" /> </session-factory> </hibernate-configuration> Client Application 1 :ClientApp.javapackage com.client; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.beans.Course; import com.beans.Student; public class ClientApp { public static void main(String ar[]){ Configuration cfg=new Configuration(); cfg.configure(); SessionFactory sf=cfg.buildSessionFactory(); Session session=sf.openSession(); Transaction tx=session.beginTransaction(); Student student=new Student(); student.setStudentId(101); student.setStuentName("Arun"); Course course=new Course(); course.setCourseId(201); course.setCourseName("hibernate"); course.setStudent(student); Course course2=new Course(); course2.setCourseId(202); course2.setCourseName("spring"); course2.setStudent(student); session.save(course); session.save(course2); tx.commit(); System.out.println("success"); } } Client Application 2 :ClientApp.javapackage com.client; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.beans.Course; import com.beans.Student; public class ClientApp { public static void main(String ar[]){ Configuration cfg=new Configuration(); cfg.configure(); SessionFactory sf=cfg.buildSessionFactory(); Session session=sf.openSession(); Transaction tx=session.beginTransaction(); Course course=(Course)session.get(Course.class, 201); System.out.println(course.getCourseId()); System.out.println(course.getCourseName()); Student student=course.getStudent(); System.out.println(student.getStudentId()); System.out.println(student.getStuentName()); tx.commit(); System.out.println("success"); } } Client Application 3 :ClientApp.javapackage com.client; import java.util.Iterator; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.beans.Course; import com.beans.Student; public class ClientApp { public static void main(String ar[]){ Configuration cfg=new Configuration(); cfg.configure(); SessionFactory sf=cfg.buildSessionFactory(); Session session=sf.openSession(); Transaction tx=session.beginTransaction(); String hqlQuery="from Course"; Query query=session.createQuery(hqlQuery); List list=query.list(); Iterator iterator=list.iterator(); while(iterator.hasNext()){ Course course=(Course)iterator.next(); System.out.println(course.getCourseId()); System.out.println(course.getCourseName()); Student student=course.getStudent(); System.out.println(student.getStudentId()); System.out.println(student.getStuentName()); } System.out.println("success"); } } Client Application 4 :ClientApp.javapackage com.client; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.beans.Course; import com.beans.Student; public class ClientApp { public static void main(String ar[]){ Configuration cfg=new Configuration(); cfg.configure(); SessionFactory sf=cfg.buildSessionFactory(); Session session=sf.openSession(); Transaction tx=session.beginTransaction(); Course course=(Course)session.get(Course.class, 201); session.delete(course); tx.commit(); System.out.println("success"); } } One to Many Bidirectional :Applying both one to many and many to one is nothing but one to many bidirectional.Example : Student.javapackage com.beans; import java.util.Set; public class Student { private int studentId; private String stuentName; private Set courses; public int getStudentId() { return studentId; } public void setStudentId(int studentId) { this.studentId = studentId; } public String getStuentName() { return stuentName; } public void setStuentName(String stuentName) { this.stuentName = stuentName; } public Set getCourses() { return courses; } public void setCourses(Set courses) { this.courses = courses; } }Course.java package com.beans; public class Course { private int courseId; private String courseName; private Student student; 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 Student getStudent() { return student; } public void setStudent(Student student) { this.student = student; } }Student.hbm.xml <!-- Related to hibernate mapping for POJO --> <hibernate-mapping> <class name="com.beans.Student" table="STUDENTDB"> <id name="studentId" column="SID"/> <property name="stuentName" column="SNAME" length="15"/> <set name="courses" cascade="all" inverse="true"> <key column="refSID"/> <one-to-many class="com.beans.Course"/> </set> </class> </hibernate-mapping>Course.hbm.xml <!-- Related to hibernate mapping for POJO --> <hibernate-mapping> <class name="com.beans.Course" table="COURSEDB"> <id name="courseId" column="CID"/> <property name="courseName" column="CNAME" length="15"/> <many-to-one name="student" column="refCID" class="com.beans.Student" cascade="all"/> </class> </hibernate-mapping>hibernate.cfg.xml <hibernate-configuration> <session-factory> <!-- Related to the connection properties --> <property name="myeclipse.connection.profile">myJdbcDriver</property> <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <property name="connection.url">jdbc:oracle:thin:@localhost:1521:xe</property> <property name="connection.username">lms</property> <property name="connection.password">scott</property> <!-- Related to the hibernate properties --> <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property> <property name="show_sql">true</property> <property name="hbm2ddl.auto">create</property> <!-- Related to hibernate mapping --> <mapping resource="com/hiber/Student.hbm.xml" /> <mapping resource="com/hiber/Course.hbm.xml" /> </session-factory> </hibernate-configuration> Client Application 1 :ClientApp.javapackage com.client; 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; import com.beans.Course; import com.beans.Student; public class ClientApp { public static void main(String ar[]){ Configuration cfg=new Configuration(); cfg.configure(); SessionFactory sf=cfg.buildSessionFactory(); Session session=sf.openSession(); Transaction tx=session.beginTransaction(); Student student=new Student(); student.setStudentId(101); student.setStuentName("Ashok"); Course course=new Course(); course.setCourseId(201); course.setCourseName("hibernate"); Course course2=new Course(); course2.setCourseId(202); course2.setCourseName("spring"); Set set=new HashSet(); set.add(course); set.add(course2); student.setCourses(set); session.save(student); tx.commit(); System.out.println("success"); } } Client Application 2 :ClientApp.javapackage com.client; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.beans.Course; import com.beans.Student; public class ClientApp { public static void main(String ar[]){ Configuration cfg=new Configuration(); cfg.configure(); SessionFactory sf=cfg.buildSessionFactory(); Session session=sf.openSession(); Transaction tx=session.beginTransaction(); Student student=new Student(); student.setStudentId(101); student.setStuentName("Arun"); Course course=new Course(); course.setCourseId(201); course.setCourseName("hibernate"); course.setStudent(student); Course course2=new Course(); course2.setCourseId(202); course2.setCourseName("spring"); course2.setStudent(student); session.save(course); session.save(course2); tx.commit(); System.out.println("success"); } } Client Application 3 :ClientApp.javapackage com.client; 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; import com.beans.Course; import com.beans.Student; public class ClientApp { public static void main(String ar[]){ Configuration cfg=new Configuration(); cfg.configure(); SessionFactory sf=cfg.buildSessionFactory(); Session session=sf.openSession(); Transaction tx=session.beginTransaction(); Student student=new Student(); student.setStudentId(101); student.setStuentName("Akshay"); Course course=new Course(); course.setCourseId(201); course.setCourseName("hibernate"); course.setStudent(student); Course course2=new Course(); course2.setCourseId(202); course2.setCourseName("spring"); course2.setStudent(student); Set set=new HashSet(); set.add(course); set.add(course2); session.save(course2); tx.commit(); System.out.println("success"); } } Many to Many mapping :
Note : In many to many relationship a mediator table is mandatory. We can call this table as join table. This join table contains only foreign keys. Example : Student.javapackage com.beans; import java.util.Set; public class Student { private int studentId; private String stuentName; private Set courses; public int getStudentId() { return studentId; } public void setStudentId(int studentId) { this.studentId = studentId; } public String getStuentName() { return stuentName; } public void setStuentName(String stuentName) { this.stuentName = stuentName; } public Set getCourses() { return courses; } public void setCourses(Set courses) { this.courses = courses; } }Course.java package com.beans; import java.util.Set; public class Course { private int courseId; private String courseName; 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 Set getStudents() { return students; } public void setStudents(Set students) { this.students = students; } }Student.hbm.xml <!-- Related to hibernate mapping for POJO --> <hibernate-mapping> <class name="com.beans.Student" table="STUDENTDB"> <id name="studentId" column="SID"/> <property name="stuentName" column="SNAME" length="15"/> <set name="courses" cascade="all" table="STUDENTCOURSE"> <key column="refSID"/> <many-to-many class="com.beans.Course" column="refCID"/> </set> </class> </hibernate-mapping>Course.hbm.xml <!-- Related to hibernate mapping for POJO --> <hibernate-mapping> <class name="com.beans.Course" table="COURSEDB"> <id name="courseId" column="CID"/> <property name="courseName" column="CNAME" length="15"/> <set name="students" cascade="all" table="STUDENTCOURSE"> <key column="refCID"/> <many-to-many class="com.beans.Student" column="refSID"/> </set> </class> </hibernate-mapping>hibernate.cfg.xml <hibernate-configuration> <session-factory> <!-- Related to the connection properties --> <property name="myeclipse.connection.profile">myJdbcDriver</property> <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <property name="connection.url">jdbc:oracle:thin:@localhost:1521:xe</property> <property name="connection.username">lms</property> <property name="connection.password">scott</property> <!-- Related to the hibernate properties --> <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property> <property name="show_sql">true</property> <property name="hbm2ddl.auto">create</property> <!-- Related to hibernate mapping --> <mapping resource="com/hiber/Student.hbm.xml" /> <mapping resource="com/hiber/Course.hbm.xml" /> </session-factory> </hibernate-configuration> Client Application 1 :ClientApp.javapackage com.client; 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; import com.beans.Course; import com.beans.Student; public class ClientApp { public static void main(String ar[]){ Configuration cfg=new Configuration(); cfg.configure(); SessionFactory sf=cfg.buildSessionFactory(); Session session=sf.openSession(); Transaction tx=session.beginTransaction(); Student student=new Student(); student.setStudentId(101); student.setStuentName("Akshay"); Student student2=new Student(); student2.setStudentId(102); student2.setStuentName("Arun"); Course course=new Course(); course.setCourseId(201); course.setCourseName("hibernate"); Course course2=new Course(); course2.setCourseId(202); course2.setCourseName("spring"); Set set=new HashSet(); set.add(course); set.add(course2); student.setCourses(set); student2.setCourses(set); session.save(student); session.save(student2); tx.commit(); System.out.println("success"); } } One to One mapping :
Example : Student.javapackage com.beans; import java.util.Set; public class Student { private int studentId; private String stuentName; private Course course; public int getStudentId() { return studentId; } public void setStudentId(int studentId) { this.studentId = studentId; } public String getStuentName() { return stuentName; } public void setStuentName(String stuentName) { this.stuentName = stuentName; } public Course getCourse() { return course; } public void setCourse(Course course) { this.course = course; } }Course.java package com.beans; public class Course { private int courseId; private String courseName; 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; } }Student.hbm.xml <!-- Related to hibernate mapping for POJO --> <hibernate-mapping> <class name="com.beans.Student" table="STUDENTDB"> <id name="studentId" column="SID"> <generator class="foreign"> <param name="property">course</param> </generator> </id> <property name="stuentName" column="SNAME" length="15"/> <one-to-one name="course" class="com.beans.Course" cascade="all"/> </class> </hibernate-mapping>Course.hbm.xml <!-- Related to hibernate mapping for POJO --> <hibernate-mapping> <class name="com.beans.Course" table="COURSEDB"> <id name="courseId" column="CID"/> <property name="courseName" column="CNAME" length="15"/> </class> </hibernate-mapping>hibernate.cfg.xml <hibernate-configuration> <session-factory> <!-- Related to the connection properties --> <property name="myeclipse.connection.profile">myJdbcDriver</property> <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <property name="connection.url">jdbc:oracle:thin:@localhost:1521:xe</property> <property name="connection.username">lms</property> <property name="connection.password">scott</property> <!-- Related to the hibernate properties --> <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property> <property name="show_sql">true</property> <property name="hbm2ddl.auto">create</property> <!-- Related to hibernate mapping --> <mapping resource="com/hiber/Student.hbm.xml" /> <mapping resource="com/hiber/Course.hbm.xml" /> </session-factory> </hibernate-configuration> Client Application 1 :ClientApp.javapackage com.client; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.beans.Course; import com.beans.Student; public class ClientApp { public static void main(String ar[]){ Configuration cfg=new Configuration(); cfg.configure(); SessionFactory sf=cfg.buildSessionFactory(); Session session=sf.openSession(); Transaction tx=session.beginTransaction(); Student student=new Student(); student.setStudentId(101); student.setStuentName("Akshay"); Course course=new Course(); course.setCourseId(201); course.setCourseName("Ashok"); student.setCourse(course); session.save(student); tx.commit(); System.out.println("success"); } } Client Application 2 :ClientApp.javapackage com.client; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.beans.Student; public class ClientApp { public static void main(String ar[]){ Configuration cfg=new Configuration(); cfg.configure(); SessionFactory sf=cfg.buildSessionFactory(); Session session=sf.openSession(); Transaction tx=session.beginTransaction(); Student student=(Student)session.get(Student.class, 101); session.delete(student); tx.commit(); System.out.println("success"); } } |