Stai usando GenerationType.IDENTITY per il sequenziamento, che richiede il recupero degli ID da ogni istruzione di inserimento uno per uno. Prova uno schema di sequenziamento che consente la preallocazione in lotti di 500 e vedrai miglioramenti:http://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing#Identity_sequencing