Inserção em massa de dados via JpaRepository em Spring Boot e Kotlin
Olá a todos! Estou escrevendo uma aplicação em Kotlin + Spring Boot + Hibernate e preciso inserir muitos registros em uma tabela CockroachDB. Atualmente, estou fazendo isso em um loop com saveAll():
```kotlin
@Repository
interface UserRepository : JpaRepository
@Service
class UserService(private val repo: UserRepository) {
fun insertUsers(users: List) {
users.forEach { repo.save(it) } // ou repo.saveAll(users)
}
}
```
Problema: se houver 1000+ usuários, isso funciona muito lentamente. Nos logs, vejo que o Hibernate cria um INSERT separado para cada registro. Li que é possível fazer batch inserts, mas não entendo como configurar corretamente.
Perguntas:
1. Como fazer inserção em massa via JpaRepository para que o Hibernate agrupe os INSERTs em um único lote?
2. É necessário alterar o application.yml ou adicionar alguma anotação?
3. Há diferença entre saveAll() e um loop com save()?
4. Como isso funciona com CockroachDB (parece que ela suporta batch)?
Versões: Spring Boot 3.2,