Bidirectional One-To-Many/Many-To-One Relationship using Join Tables in Hibernate

In bidirectional association, we will have navigation in both direction, i.e, both side of the association will have the reference to the other side. The both side of the association will implement one of the collection interfaces, if it has the reference to the other entity.

In one to many or many to one relationship, one source object can have relationship with multiple target objects or multiple target objects will have relationship with only one source object. Let’s consider CD and Artist. So one CD can be written by multiple Artists or multiple Artists can write only one CD. So we will create three tables CD, Artist and CDArtist in the database and we will see how one-to-many/many-to-one relationship works step by step.

The following is an example of a bidirectional one-to-many association on a join table. The inverse=”true” can go on either end of the association, on the collection, or on the join.

Step 1. Create tables

Create table – cd


Create table – artist


Create table – cdartist


Step 2. Create a java project in any Java based IDE and configure for hibernate jars.

Step 3. Create hibernate reverse engineering and configuration file.


Step 4. Create hibernate utility class which creates singleton SessionFactory from which Session object will be created.


Step 5. Create mapping xml file and POJO for artist table. Look at the xml file, we have <many-to-one /> which makes sure that multiple artists can write only one cd. <join/> with inverse=”true” declares that the artist property of the Cd class is the inverse of a property on the other side of the association.


Step 6. Create mapping xml file and POJO for cd table. cascade represents that if the cascade side of the entity is saved then the other side of the entity will automatically saved by the hibernate.


Step 7. Now we will create a main class for testing one-to-one on primary key.


Step 8. Run the main class and see the output as shown below. While we save value for cd, the below values are stored into the database tables.

inserted data into artist table

inserted data into cd table

inserted data into cdartist table

Console Output


That’s all. Thanks for your reading.

Leave a Reply

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

Time limit is exhausted. Please reload CAPTCHA.