Hibernate/JBoss & Bulk Insert?

S

Steve

I am looking for a way to do a bulk insert of thousands of objects using JBoss and Hibernate. I currently have an injected
EntityManager with a JTA PersistenceContext in a Stateless Session Bean and am doing something like

for(int i = 0; i < num; i++){
MyObject myObject = createMyObject(num, ...);
entityManager.persist(myObject);
}

(in a try/catch block) which is slow.

I have unsuccessfully tried to use entityManager.getTransaction() to begin, commit, etc. transactions. I have also unsuccessfully
tied to convert the EntityManager to a HibernateEntityManager and use Hibernate transactions. I've also tried to use
@TransactionAttribute(TransactionAttributeType.REQUIRED) but it made no significant difference (it's slightly faster).

Is there a way to save multiple objects in a "single" database call, or at least a few?

BTW, Having something like entityManager.persist(collection) would be nice.

Thanks.

Steve
 
O

Owen Jacobson

I am looking for a way to do a bulk insert of thousands of objects using JBoss and Hibernate. I currently have an injected
EntityManager with a JTA PersistenceContext in a Stateless Session Bean and am doing something like

  for(int i = 0; i < num; i++){
    MyObject myObject = createMyObject(num, ...);
    entityManager.persist(myObject);
  }

(in a try/catch block) which is slow.

I have unsuccessfully tried to use entityManager.getTransaction() to begin, commit, etc. transactions. I have also unsuccessfully
tied to convert the EntityManager to a HibernateEntityManager and use Hibernate transactions. I've also tried to use
@TransactionAttribute(TransactionAttributeType.REQUIRED) but it made no significant difference (it's slightly faster).

Is there a way to save multiple objects in a "single" database call, or at least a few?

BTW, Having something like entityManager.persist(collection) would be nice.

You'll get much better performance for bulk operations by realizing
that your database *does not store Objects*, just rows, and treating
data appropriately. In this case, iBATIS or straight JDBC will
probably be much, much faster than JPA, as you can skip all of the
steps involved in converting your data to objects and back to data.
In fact, you may be better off skipping the app entirely and using
your DB's equivalent of COPY <tablename> or LOAD <tablename> to bulk-
load data from a flat file...

-o
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,228
Members
46,818
Latest member
SapanaCarpetStudio

Latest Threads

Top