This tutorial walks you through the process of mapping a Hibernate one-to-many relationship with Spring Boot, Spring Data JPA and HSQL

What you'll need

  • JDK 1.7 or later
  • Maven 3 or later

Stack

  • Spring Data JPA
  • Spring Boot

Init project structure and dependencies

Project structure

├── src
│   └── main
│       ├── java
│       │   └── com
│       │       └── hellokoding
│       │           └── jpa
│       │               ├── model
│       │               │   ├── Book.java
│       │               │   └── BookCategory.java
│       │               ├── repository
│       │               │   └── BookCategoryRepository.java
│       │               └── HelloJpaApplication.java
│       └──resources
│          └── application.properties
└── pom.xml

Project dependencies


Define JPA Entities and Repositories

One-To-Many Relationship

The book_category and book tables have a one-to-many relationship via book_category.id and book.book_category_id.

Define JPA Entities

JPA Entity is defined with @Entity annotation, represent a table in your database.



@Table maps the entity with the table. If no @Table is defined, the default value is used: the class name of the entity.

@Id declares the identifier property of the entity.

@Column maps the entity's field with the table's column. If @Column is omitted, the default value is used: the field name of the entity.

@OneToMany and @ManyToOne defines a one-to-many and many-to-one relationship between 2 entities. @JoinColumn indicates the entity is the owner of the relationship: the corresponding table has a column with a foreign key to the referenced table. mappedBy indicates the entity is the inverse of the relationship.

Spring Data JPA Repository

Spring Data JPA contains some built-in Repository implemented some common functions to work with database: findOne, findAll, save,...All we need for this example is extend it.


Define properties and run the application

Application Properties


Run the application


You can run the application using mvn spring-boot:run and check the result in the console log

Source code

https://github.com/hellokoding/hellokoding-courses/tree/master/jpa-hibernate-examples/jpa-hibernate-one-to-many-hsql