Spring Boot JPA Batch Insert Example

In this tutorial, you will learn how to use Spring Data JPA to perform batch insert operation in Spring Boot Application.

1. Set up a Spring Boot project

Let's launch Spring Initializr and fill up the following project details: 

Project: Maven Project (or Gradle) 

Language: Java 

Packaging: Jar 

Java version: 17

Dependencies: Spring Data JPA, MySQL Driver, and Lombok

Download, extract the project, and import it to your favorite IDE.

2. Configure the MySQL database 

Let's open the src/main/resources/application.properties file and add the MySQL configuration properties:


Make sure that you change the MySQL database username and password as per your MySQL installation on your machine.

The spring.jpa.hibernate.ddl-auto=update line ensures that tables and columns get automatically created or updated based on your JPA entities.

3. Create Entity 

For the sake of this example, let's use a Person entity:

import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;

@Table(name = "persons")
public class Person {
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String email;

4. Create Spring Data JPA Repository - PersonRepository

Let's create an PersonRepository interface that extends the JpaRepository interface from Spring Data JPA:

import com.springdatajpa.springboot.entity.Person;
import org.springframework.data.jpa.repository.JpaRepository; public interface PersonRepository extends JpaRepository<Person, Long> {

5. Service Layer 

To perform the batch insert, use the saveAll method provided by Spring Data JPA:

public class PersonService {

    private PersonRepository personRepository;

    public List<Person> savePersons(List<Person> persons) {
        return personRepository.saveAll(persons);

Remember to mark the method with @Transactional to ensure it runs within a transaction.

6. Testing the Batch Insert 

You can test the batch insert operation by creating a list of Person objects and saving them using the service:

public class BatchInsertTest {

    private PersonService personService;

    public void testBatchInsert() {
        List<Person> persons = new ArrayList<>();
        for (int i = 0; i < 200; i++) {
            persons.add(new Person("Name" + i, "name" + i + "@example.com"));
        // Add assertions or further test logic as needed.


Batch inserts can dramatically improve performance when inserting a large number of entities. By setting up the correct configurations and using the tools provided by Spring Data JPA, you can easily integrate batch operations into your Spring Boot application.