0

I would like to improve my insert performance on hibernate with my Java EJB Application deployed on Wildfly 10.0

I would like to perform batch inser on hibernate but with my code the insert is more slowly than without batch insert.

Here is my Method which performs the insert. It gets a List of customers and should persist it. The If-clause makes the difference.

public List<Customer> insertCustomerList(List<Customer> cusList)
    {

        try {

            int batchSize = 25;

            for ( int i = 0; i < cusList.size(); ++i ) {

                em.persist( cusList.get(i) );



                if ( i > 0 && i % batchSize == 0 ) {
                    System.out.println("FLUSHFG");
                    //flush a batch of inserts and release memory
                    em.flush();
                    em.clear();
                }

            }

        } catch (RuntimeException e) {
                throw e;
        }

        return cusList;
    }

In my opinion it should be faster with the flush and clear but it is way more slowly than without!

In my Wildfly container I can not activate a new session or a new transaction because I get an error.

Can you tell me how I can manage the batch insert with wildfly so that the insert of large and many entity will be more fast and not more slowly?

In my persistence xml I have this property:

<property name="hibernate.jdbc.batch_size" value="25"/>

Thanks!

Michael
  • 251
  • 1
  • 2
  • 13
  • Might be helpful: https://stackoverflow.com/a/35794220/4754790 – Dragan Bozanovic Nov 20 '17 at 23:41
  • Hello, Thank you! it was the problem with identity. I replaced it with Type TABLE and the performance was awful. I am using mysql so no chance tu use generationtype sequence or? – Michael Nov 21 '17 at 08:17

0 Answers0