CodesJava

Easy learning with example program codes

Hibernate SortedMap mapping


SortedMap in collection:

SortedMap is map which maintains its entries in ascending key order.

SortedMap mapping:

If an entity has a SortedMap of values for a property then this property can be mapped by using <map> element. A map is initialized with java.util.TreeMap.

Example:

Student.java

import java.util.SortedMap;
/**
 * This class represents a persistent class for Student.
 * @author codesjava
 */
public class Student {
	//data members
	private int studentId;
	private String firstName;
	private String lastName;
	private String className;
	private String rollNo;
	private int age;
	private SortedMap subjects;
 
	//no-argument constructor
	public Student(){
 
	}
 
	//argument constructor
	public Student(String firstName, String lastName, 
			String className, String rollNo, int age){
		this.firstName = firstName;
		this.lastName = lastName;
		this.className = className;
		this.rollNo = rollNo;
		this.age = age;		
	}
 
	//getter and setter methods
	public int getStudentId() {
		return studentId;
	}
	public void setStudentId(int studentId) {
		this.studentId = studentId;
	}
	public String getFirstName() {
		return firstName;
	}
	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}
	public String getLastName() {
		return lastName;
	}
	public void setLastName(String lastName) {
		this.lastName = lastName;
	}
	public String getClassName() {
		return className;
	}
	public void setClassName(String className) {
		this.className = className;
	}
	public String getRollNo() {
		return rollNo;
	}
	public void setRollNo(String rollNo) {
		this.rollNo = rollNo;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public SortedMap getSubjects() {
		return subjects;
	}
	public void setSubjects(SortedMap subjects) {
		this.subjects = subjects;
	}
}

Subject.java

/**
 * This class represents a persistent class for Subject.
 * @author codesjava
 */
public class Subject implements Comparable <String>{
	//data members
	private int subjectId;
	private String subjectName;
 
	//no argument constructor
	public Subject(){
 
	}
 
	//argument constructor
	public Subject(String subjectName){
		this.subjectName = subjectName;
	}
 
	//getter and setter methods
	public int getSubjectId() {
		return subjectId;
	}
	public void setSubjectId(int subjectId) {
		this.subjectId = subjectId;
	}
	public String getSubjectName() {
		return subjectName;
	}
	public void setSubjectName(String subjectName) {
		this.subjectName = subjectName;
	}	
 
	public int compareTo(String subject){      
                      if(this == null) {
                             return 1;
                      } else if(subject == null) {
                             return -1;
                      } else {
                            return this.compareTo(subject);
                      }
            }
}

hibernate.cfg.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration SYSTEM
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
 
<hibernate-configuration>
 
    <session-factory>
        <property name="dialect">
           org.hibernate.dialect.OracleDialect
        </property>
        <property name="connection.url">
           jdbc:oracle:thin:@localhost:1521:XE
        </property>
        <property name="connection.username">
           system
        </property>
        <property name="connection.password">
           oracle
        </property>
        <property name="connection.driver_class">
           oracle.jdbc.driver.OracleDriver
        </property>
        <property name="hbm2ddl.auto">
           update
        </property>
        <property name="show_sql">
           true
        </property>
 
        <mapping resource="student.hbm.xml"/>
        <mapping resource="subject.hbm.xml"/>
 
    </session-factory>
 
</hibernate-configuration>

student.hbm.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping SYSTEM
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 
<hibernate-mapping>
 
 <class name="com.codesjava.business.Student" table="Student">
  <id name="studentId" type="int" column="Student_Id">
	<generator class="native"></generator>
  </id>
 
  <property name="firstName" column="First_Name" type="string"/>
  <property name="lastName" column="Last_Name" type="string"/>
  <property name="className" column="Class" type="string"/>
  <property name="rollNo" column="RollNo" type="string"/>
  <property name="age" column="Age" type="int"/>
 
  <map name="subjects" cascade="all"  sort="natural" >
       <key column="Student_Id"/>
       <index column="Student_Class"  type=”string”/>
       <one-to-many class="com.codesjava.business.Subject"/>
  </map>
 
 </class>
 
</hibernate-mapping>

subject.hbm.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping SYSTEM
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 
<hibernate-mapping>
 
  <class name="com.codesjava.business.Subject" table="Subject">
    <id name="subjectId" type="int" column="Subject_Id">
	<generator class="native"></generator>
    </id>
 
    <property name="subjectName" column="Subject_Name"
                                        type="string"></property>
 
  </class>
 
</hibernate-mapping>

HibernateUtil.java

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
 
/**
 * This is a utility class for getting the hibernate session object.
 * @author codesjava
 */
public class HibernateUtil {
    private static final SessionFactory sessionFactory = 
                                           buildSessionFactory();
 
    private static SessionFactory buildSessionFactory() {
    	SessionFactory sessionFactory = null;
        try {
        	//Create the configuration object.
        	Configuration configuration = new Configuration(); 
        	//Initialize the configuration object 
                //with the configuration file data
        	configuration.configure("hibernate.cfg.xml");
        	// Get the SessionFactory object from configuration.
        	sessionFactory = configuration.buildSessionFactory();
        }
        catch (Exception e) {
           e.printStackTrace();
        }
        return sessionFactory;
    }
 
    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
 
}

HibernateTest.java

import java.util.HashMap;
import com.codesjava.persistence.StudentDBOperations;
 
/**
 * This class is used for the hibernate operations.
 * @author codesjava
 */
public class HibernateTest {
	public static void main(String args[]){
		TreeMap map = new TreeMap();
		map.put("MCA1",new Subject("Data Structure"));
		map.put("MCA2",new Subject("DBMS"));
		map.put("MCA3",new Subject("Java"));
 
		//Create the student object.
		Student student = new Student("Kapil", "Chawla", 
				"MCA final", "MCA/07/59", 27);
		student.setSubjects(map);
 
		StudentDBOperations obj = new StudentDBOperations();
		//insert student object.
		obj.addStudent(student);
 
		//show all student object.
		obj.showAllStudentDetails();
 
	}
}

StudentDBOperations.java

import java.util.List;
import java.util.Map;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.codesjava.business.Student;
import com.codesjava.business.Subject;
 
/**
 * This class contains the methods to interact with database.
 * @author codesjava
 */
public class StudentDBOperations {
	/**
	 * This method is used to insert a new student record.
	 * @param student
	 * @return studentId
	 * @author codesjava
	 */
	public Integer addStudent(Student student){
	    Transaction tx = null;
	    Integer studentId = null;
	    //Get the session object.
	    Session session = 
                    HibernateUtil.getSessionFactory().openSession();
	    try{
	         tx = session.beginTransaction();
	         studentId = (Integer) session.save(student); 
	         tx.commit();
	      }catch (HibernateException e) {
	         if(tx!=null){
	        	 tx.rollback();
	         }
	         e.printStackTrace(); 
	      }finally {
	         session.close(); 
	      }
	      return studentId;	
	}
 
	/**
	 * This method is used retrieve and show the records.
	 * @author codesjava
	 */
	public void showAllStudentDetails(){
	    Transaction tx = null;
	    //Get the session object.
	    Session session = 
                    HibernateUtil.getSessionFactory().openSession();
	    try{
	         tx = session.beginTransaction();
	         List<Student> students = 
                         session.createQuery("FROM Student").list();
	         for(Student student : students){
	        	 System.out.println("First Name: " 
                                          + student.getFirstName()); 
	        	 System.out.println("Last Name: " 
                                           + student.getLastName()); 
	        	 System.out.println("Class: " 
                                          + student.getClassName()); 
	        	 System.out.println("RollNo: " 
                                             + student.getRollNo()); 
	        	 System.out.println("Age: " 
                                               + student.getAge()); 
	        	 Map subject = student.getSubjects();
	        	 System.out.println("Subject Name:" + 
	        	        ((Subject)subject.get("MCA1"))
                                                 .getSubjectName());
	        	 System.out.println("Subject Name:" + 
	        	         ((Subject)subject.get("MCA2"))
                                                 .getSubjectName());
	        	 System.out.println("Subject Name:" + 
	        		 ((Subject)subject.get("MCA3"))
                                                 .getSubjectName());
	         }
	         tx.commit();
	      }catch (HibernateException e) {
	         if(tx!=null){
	        	 tx.rollback();
	         }
	         e.printStackTrace(); 
	      }finally {
	         session.close(); 
	      }
	}
}

Output:

Hibernate: select hibernate_sequence.nextval from dual
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: insert into Student (First_Name, Last_Name, Class, 
RollNo, Age, Student_Id) values (?, ?, ?, ?, ?, ?)
Hibernate: insert into Subject
 (Subject_Name, Subject_Id) values (?, ?)
Hibernate: insert into Subject
 (Subject_Name, Subject_Id) values (?, ?)
Hibernate: insert into Subject 
(Subject_Name, Subject_Id) values (?, ?)
Hibernate: update Subject set Student_Id=?, 
Subject_Class=? where Subject_Id=?
Hibernate: update Subject set Student_Id=?, 
Subject_Class=? where Subject_Id=?
Hibernate: update Subject set Student_Id=?, 
Subject_Class=? where Subject_Id=?
Hibernate: select student0_.Student_Id as 
Student1_0_, student0_.First_Name as First2_0_, 
student0_.Last_Name as Last3_0_, student0_.Class as 
Class0_, student0_.RollNo as RollNo0_, student0_.Age
 as Age0_ from Student student0_
First Name: Kapil
Last Name: Chawla
Class: MCA final
RollNo: MCA/07/59
Age: 27
Hibernate: select subjects0_.Student_Id as Student3_1_, 
subjects0_.Subject_Id as Subject1_1_, subjects0_.Subject_Class 
as Subject4_1_, subjects0_.Subject_Id as Subject1_1_0_, 
subjects0_.Subject_Name as Subject2_1_0_ from Subject 
subjects0_ where subjects0_.Student_Id=?
Subject Name:Data Structure
Subject Name:DBMS
Subject Name:Java

Download this example.
 
Next Topic: Hibernate association mappings with example.
Previous Topic: Hibernate Map mapping with example.

Related Topics:

Hibernate Set mapping with example.
Hibernate SortedSet mapping with example.
Hibernate list mapping with example.
Hibernate bag mapping with example.
Hibernate Map mapping with example.
Hibernate SortedMap mapping with example.

 

Sign Up/ Sign In
Ask a Question


Industrial Training

We offers Placement Oriented Training on Java, Spring, JSF, Hibernate, PHP, AngularJS, Angular 4, PLSQL, Oracle BI Publisher etc. We also provides Online training, please mail us at hr@codesjava.com.

Development

We also provides the Development services for Website Development , Java Development, PHP Development, Android App Development etc. You can contact us on hr@codesjava.com.

Copyright © 2018 CodesJava DMCA.com Protection Status SiteMap Reference: Java Wiki