Unidirectional – bidirectional relationship provides navigational access in one direction
Parent -----> Child
i.e you can go from parent to child, but you cannot go back from children to parent.
However, if there were no pointer to Parent in Child:
class Child { }
Bidirectional – bidirectional relationship provides navigational access in both directions
Parent <-----> Child
i.e you can go from a Parent to its child, and vice-versa: the parent knows about its child, the child knows about its parent
class Parent { Child* children; } class Child { Parent* parent; }
Idle Scenarios
One to One unidirectional Mapping
employee knows the employer
One to One Bidirectional Mapping
employer knows the employee and employee knows the employer
One to Many unidirectional Mapping
employee has a skill in his skill set which is not used by other employees
One to Many bidirectional Mapping
employee has a skill in his skill set which is not used by other employees and
employer knows that employee has this skill in skill set
Many to One unidirectional Mapping
employees knows which employer he is going to work but employer has no idea about employee
employees will have employerId in their entity class but employer has no details of employee
Many to One bidirectional Mapping
Many employees work for one Employer. The employer knows about employee and employee knows about employer
employees will have employerId in their entity class but employer will have empid of employee
Many to Many unidirectional Mapping
Employee knows the employers he has worked for but employers does not know details of employee who worked for them
Many to Many bidirectional Mapping
Employee knows about the employers he has worked for and employers knows about employee who has worked for them.