Hibernate – one-to-many relationship example

Connect with

Hibernate one to many exampleHibernate one to many example using XML mapping relationship betwen entities. Hibernate one to many relationship parent child using XMl mapping.

1. Overview of Hibernate One to Many Example

Well, one-to-many is one of the types of relationships in Hibernate. This is a parent-child relationship where one parent can have many children. Here, you have to establish a relationship between two different entity/domain model classes.
For your dependency library, you can download the source code of hello world hibernate program, at the end of this post you can find a link to download source code.

2. What is Hibernate one-to-many Relationship

In one to many relationships, one parent can have multiple children. when you read the relationship read from parent to child. In this post, tried to demonstrate one department can have multiple employee. so in Departement table has one foreign key which hold primary key of employee. So when you select a department by you can get many employees.

This can be achieved by two different ways:

  1. one by foreign key and
  2. another way by a mapping table.

In this post, tried to demonstrate by the foreign key. However, you can try with mapping table between two entities.

3. Domain model for Hibernate one to many mapping

Here, Department can have many Employee and in POJO Department object holds many reference of employee.

File: Department.java

package com.mysoftkey.relationship.one2many;

import java.util.HashSet;
import java.util.Set;

public class Department {

	private Long departmentId;
	private String departmentName;
	private Set employees;

	// utility method to add employee in department 
	public void addEmployee(Employee e){
	  if (employees == null){
	    employees = new HashSet();
   //Gernerate setter/getter , omited to clear the code

File: Employee.java

package com.mysoftkey.relationship.one2many;

import java.sql.Date;

public class Employee {

	private Long employeeId;
	private String firstname;
	private String lastname;
	private Date birthDate;
	private String cellphone;
	private Department department;

	public Employee() {

	public Employee(String firstname, String lastname, Date birthdate,
			String phone) {
	 this.firstname = firstname;
	 this.lastname = lastname;
	 this.birthDate = birthdate;
	 this.cellphone = phone;

	public Employee(String firstname, String lastname, String phone) {
	 this.firstname = firstname;
	 this.lastname = lastname;
	 this.cellphone = phone;
	public boolean equals(Object emp) {
	  if(emp instanceof Employee) {
	     Employee employee = (Employee)emp;
	     if(this.firstname.equals(employee.getFirstname()) &&
		return true;

	 return false;
	public int hashCode() {
	  return this.firstname.hashCode() + this.lastname.hashCode();
	//Gernerate setter/getter , omited to clear the code	

4. .hbm.xml mapping for Hibernate one-to-many relationship

In this section of .hbm.xml mapping you learn about how to configure one to many mapping in Hibernate using XML.
File: Department.hbm.xml





File: Employee.hbm.xml




If you look first Department.hbm.xml, its one to many relatioship . if you look Employee.hbm.xml first , then you find many to one because many employee can have in one department.

5. Configuration for Hibernate one to many relationship


6. Run one to many relationship

File: OneToManyClient.java

package com.mysoftkey.relationship.one2many;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

 * This example is used to demonstrate one to many example in Hibenate.
 * @author Ranjeet Jha
public class OneToManyClient {

  public static void main(String[] args) {
    // in project use commented code but in demo you can use any one.
    // SessionFactory sf = HibernateUtil.getSessionFactory();
    SessionFactory sf = new Configuration().configure().buildSessionFactory();
    Session session = sf.openSession();

    // Create Department object and populate values
    Department department = new Department();
    // save department 

    // Create list of employee object and assigned department
    Employee emp1 = new Employee("Ranjeet", "Kumar", "111");
    Employee emp2 = new Employee("Tanisha Jha", "Jha", "222");

    // assigned saved department to employee to add foreing key in employee table.


7. Output of one to many Hibernate relationship

Eclipse console output:

Hibernate: insert into DEPARTMENT_one2many (DEPT_NAME) values (?)
Hibernate: insert into EMPLOYEE_one2many (firstname, lastname, birth_date, cell_phone, department_id) values (?, ?, ?, ?, ?)
Hibernate: insert into EMPLOYEE_one2many (firstname, lastname, birth_date, cell_phone, department_id) values (?, ?, ?, ?, ?)

mySQL output:

mysql> select * from employee_one2many
    -> ;
| EMPLOYEE_ID | firstname   | lastname | birth_date | cell_phone | department_id |
|           1 | Ranjeet     | Kumar    | NULL       | 111        |             1 |
|           2 | Tanisha Jha | Jha      | NULL       | 222        |             1 |
2 rows in set (0.00 sec)

mysql> select * from department_one2many;
|             1 | Sales     |
1 row in set (0.00 sec)


8. Reference

Hibernate site

Thanks for visiting this post for learning Hibernate one to may relationship example. You can also visit Java Hibernate ORM Tutorial Listing page for more articles on Hibernate ORM framework.
Happy Learning 🙂 for Hibernate one to many mapping examples.
Your comments are welcome to improve this one-to-many relationship in Hibernate post. Happy Learning 🙂

Connect with

Leave a Comment

Your email address will not be published. Required fields are marked *