Efter att ha provat alla möjliga lösningar hittade jag äntligen en lösning för att infoga 100 000 rader under 5 sekunder!
Saker jag försökte:
1) Ersatte hibernate/databasens AUTOINCREMENT/GENERATED ID:n med egengenererade ID:n med AtomicInteger
2) Aktivera batch_inserts med batch_size=50
3) Tömning av cache efter varje 'batch_size' antal persist()-anrop
4) multithreading (försökte inte den här)
Det som slutligen fungerade var att använda en native multi-sert query och infoga 1000 rader i en sql insert-fråga istället för att använda persist() på varje enhet. För att infoga 100 000 entiteter skapar jag en inbyggd fråga som denna "INSERT into MyTable VALUES (x,x,x),(x,x,x).......(x,x,x)"
[1000 radinfogningar i en sql-infogningsfråga]
Nu tar det cirka 3 sekunder att infoga 100 000 poster! Så flaskhalsen var själva ormen! För massinlägg är det enda som verkar fungera inbyggda infogningsfrågor!