Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Java (http://www.velocityreviews.com/forums/f30-java.html)
-   -   Re: Hibernate/JBoss & Bulk Insert? (http://www.velocityreviews.com/forums/t635514-re-hibernate-jboss-and-bulk-insert.html)

Steve 09-15-2008 11:49 PM

Re: Hibernate/JBoss & Bulk Insert?
 
Thanks for your reply. However, I would still like a way to use Hibernate for bulk inserts, if possible, since I'm trying to improve
the performance of a web app. Although straight JDBC, etc. may be faster, the database tables use primary keys that are auto
incremented and this can cause a problem using JDBC when multiple users can concurrently make inserts into the database.

In addition, I do have a program that will create a file that I can import into MySQL that runs very fast.

Steve

BTW, I know that the database doesn't store objects. That's why an ORM (i.e., Hibernate) is being used to bridge Java and a
relational database.

From: "Owen Jacobson" <angrybaldguy@gmail.com>
Subject: Re: Hibernate/JBoss & Bulk Insert?
Date: Monday, September 15, 2008 5:47 PM

On Sep 15, 3:43 pm, "Steve" <g...@acm.org> wrote:
> 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.REQ UIRED) 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




All times are GMT. The time now is 06:05 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.