If you have a relationship between 2 entities, for example, Department and Employee, you can have a one-way relationship (Employee->Department) or a two-way relationship (Employee<->Department).
In Hibernate, you define relationships using field annotations (@OneToOne, @OneToMany, @ManyToOne, @ManyToMany). A one-way (unidirectional) relationship would be one where the child table (Employee) has an object relationship with its parent (Department). A two-way (bidirectional) relationship has this relationship, but also a relationship (as a collection unless it's one-to-one) from parent to child(ren).
Because Hibernate is an
object relational system, the application-level linkage isn't a field or field value as such, but instead an object. That means that you can read a set of records in a single operation, obtaining, for example, a selected department object containing a collection of all the department's employee objects. If the objects are defined with bi-directional relationships, you can then easily find data from one object via its linkage to the other using ordinary
Java data references. For example, "thisEmployee.department.departmentName", or its getter/setter equivalent: "thisEmployee.getDepartment().getDepartmentName()".
Assuming a one-to-many relationship, the reverse direction references would look something like "thisDepartment.getEmployees().get(3).getName()" to get the name of the 4th employee in the department employee list. Note that List item numbers start with zero (which is why "3" for the fourth element) and the order of employees in the list would have to be also explicitly defined or the list would be in random order.