Używasz GenerationType.IDENTITY do sekwencjonowania, co wymaga pobierania identyfikatorów z każdej instrukcji INSERT jeden po drugim. Wypróbuj schemat sekwencjonowania, który umożliwia wstępną alokację w partiach po 500, a zobaczysz ulepszenia:http://pl.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing#Identity_sequencing