Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #32980

Re: Performance JPA

From Cecil Westerhof <Cecil@decebal.nl>
Newsgroups comp.lang.java.programmer
Subject Re: Performance JPA
Date 2015-11-03 07:52 +0100
Organization Decebal Computing
Message-ID <87d1vrk20x.fsf@Equus.decebal.nl> (permalink)
References <87lhagkcsh.fsf@Equus.decebal.nl> <563763d9$0$23727$e4fe514c@news.xs4all.nl>

Show all headers | View raw


On Monday  2 Nov 2015 14:23 CET, silvio@internet.com wrote:

> On 11/02/2015 09:47 AM, Cecil Westerhof wrote:
>> We needed to change from JDBC to JPA. It looks like the performance
>> is 10 to 20 times as slow as it was with JDBC. I could understand
>> JPA to be slower as JDBC, but not with this kind of difference. Are
>> there any common error that would explain this kind of penalty?
>>
>
> I remember you came to us here a couple of months ago with the
> intent of moving an application from JDBC to JPA. You gave us little
> to go on for advice. I also remember telling you this day would
> probably come...
>
> But let's put that aside and see if we can fix your situation.
> Please tell us what the typical database access from your
> application looks like and which things are particularly slow in
> comparison to how it was?

At the moment I am told that everything is slower. I am told that a
query that took at most 5 seconds now takes one to two minutes. But I
asked them to measure the old situation and until now they did not do
this. I hope to get today real data about this. But several pages now
give a timeout.


> JDBC and JPA are incomparable. JDBC is an API to execute SQL
> statements against an RDBMS (with some very limited added
> abstractions to standardize access to meta-data). JPA is an object
> persistence implementation that uses an RDBMS for storage (via JDBC,
> btw). It has some quirky options to execute raw SQL but that is just
> plain stupid.
>
> UNLESS you where already doing the second (persisting objects)
> manually using JDBC, the performance hit after switching to JPA is
> inevitable. Database access can be very quick, using JDBC or any
> other library.

OK, JDBC was just using rowmapper and copying the fields. No
persistence at all. So maybe the difference is less strange as I
thought.


> But having an object persistence layer sitting between your
> application and the database can make thing stupendously inefficient
> for one application and it can also be a nice match with little
> added overhead for the other. It just depends on what your
> application is.
>
> Please feel free to elaborate...

As I understood it until now, there should be a little overhead, but
it can be worse I understand now. As said in the above rowmapper was
used. Now the application uses em.find to read. For displaying a page
only reads are done, so using em.find instead rs.get... seems to make
a very big difference. Is there a reason for this and can there be
something done about this?

By the way we use a generic function because a lot of classes are
extended. We use:
    public T read(K id) {
        return em.find(entityClass, id);
    }

We fill entityClass in the constructor with:
    entityClass = (Class<t>) genericSuperClass.getActualTypeArguments()[0];

In the create, update and delete functions we use an em.flush beside
the em.persist, em.merge and em.remove.

-- 
Cecil Westerhof
Senior Software Engineer
LinkedIn: http://www.linkedin.com/in/cecilwesterhof

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Performance JPA Cecil Westerhof <Cecil@decebal.nl> - 2015-11-02 09:47 +0100
  Re: Performance JPA Silvio <silvio@internet.com> - 2015-11-02 14:23 +0100
    Re: Performance JPA Cecil Westerhof <Cecil@decebal.nl> - 2015-11-03 07:52 +0100
      Re: Performance JPA Martin Gregorie <martin@address-in-sig.invalid> - 2015-11-03 11:16 +0000
        Re: Performance JPA Cecil Westerhof <Cecil@decebal.nl> - 2015-11-03 19:11 +0100
          Re: Performance JPA Martin Gregorie <martin@address-in-sig.invalid> - 2015-11-03 19:15 +0000
            Re: Performance JPA Cecil Westerhof <Cecil@decebal.nl> - 2015-11-04 09:28 +0100
              Re: Performance JPA Cecil Westerhof <Cecil@decebal.nl> - 2015-11-10 08:07 +0100
                Re: Performance JPA Silvio <silvio@internet.com> - 2015-11-10 10:35 +0100
                Re: Performance JPA Cecil Westerhof <Cecil@decebal.nl> - 2015-11-11 06:20 +0100
                Re: Performance JPA Arne Vajhøj <arne@vajhoej.dk> - 2015-11-11 09:32 -0500
                Re: Performance JPA Arne Vajhøj <arne@vajhoej.dk> - 2015-11-10 19:56 -0500
                Re: Performance JPA Cecil Westerhof <Cecil@decebal.nl> - 2015-11-11 06:50 +0100
                Re: Performance JPA Martin Gregorie <martin@address-in-sig.invalid> - 2015-11-11 12:17 +0000
                Re: Performance JPA Arne Vajhøj <arne@vajhoej.dk> - 2015-11-11 09:30 -0500
                Re: Performance JPA Cecil Westerhof <Cecil@decebal.nl> - 2015-11-11 23:20 +0100
                Re: Performance JPA Cecil Westerhof <Cecil@decebal.nl> - 2015-11-11 23:11 +0100
                Re: Performance JPA Arne Vajhøj <arne@vajhoej.dk> - 2015-11-11 19:10 -0500
                Re: Performance JPA Cecil Westerhof <Cecil@decebal.nl> - 2015-11-12 07:27 +0100
                Re: Performance JPA Cecil Westerhof <Cecil@decebal.nl> - 2015-11-13 08:30 +0100
                Re: Performance JPA Silvio <silvio@internet.com> - 2015-11-13 10:45 +0100
                Re: Performance JPA Cecil Westerhof <Cecil@decebal.nl> - 2015-11-13 11:06 +0100
                Re: Performance JPA Silvio <silvio@internet.com> - 2015-11-13 13:36 +0100
                Re: Performance JPA Cecil Westerhof <Cecil@decebal.nl> - 2015-11-20 09:04 +0100
                Re: Performance JPA Arne Vajhøj <arne@vajhoej.dk> - 2015-11-13 21:46 -0500
                Re: Performance JPA Cecil Westerhof <Cecil@decebal.nl> - 2015-11-20 09:09 +0100
          Re: Performance JPA Arne Vajhøj <arne@vajhoej.dk> - 2015-11-03 20:35 -0500
            Re: Performance JPA Cecil Westerhof <Cecil@decebal.nl> - 2015-11-04 09:35 +0100
              Re: Performance JPA Arne Vajhøj <arne@vajhoej.dk> - 2015-11-07 22:09 -0500
      Re: Performance JPA Silvio <silvio@internet.com> - 2015-11-03 12:29 +0100
        Re: Performance JPA Cecil Westerhof <Cecil@decebal.nl> - 2015-11-03 19:23 +0100
        Re: Performance JPA Arne Vajhøj <arne@vajhoej.dk> - 2015-11-03 20:44 -0500
          Re: Performance JPA Cecil Westerhof <Cecil@decebal.nl> - 2015-11-04 09:48 +0100
          Re: Performance JPA Silvio <silvio@internet.com> - 2015-11-04 10:23 +0100
            Re: Performance JPA Cecil Westerhof <Cecil@decebal.nl> - 2015-11-04 11:27 +0100
              Re: Performance JPA Silvio <silvio@internet.com> - 2015-11-04 12:42 +0100
                Re: Performance JPA Arne Vajhøj <arne@vajhoej.dk> - 2015-11-07 22:18 -0500
                Re: Performance JPA Silvio <silvio@internet.com> - 2015-11-09 10:43 +0100
                Re: Performance JPA Cecil Westerhof <Cecil@decebal.nl> - 2015-11-20 09:13 +0100
            Re: Performance JPA Arne Vajhøj <arne@vajhoej.dk> - 2015-11-07 22:12 -0500
              Re: Performance JPA Silvio <silvio@internet.com> - 2015-11-09 10:22 +0100
                Re: Performance JPA Arne Vajhøj <arne@vajhoej.dk> - 2015-11-10 21:35 -0500
                Re: Performance JPA Silvio <silvio@internet.com> - 2015-11-11 11:29 +0100
      Re: Performance JPA Arne Vajhøj <arne@vajhoej.dk> - 2015-11-03 20:42 -0500
        Re: Performance JPA Cecil Westerhof <Cecil@decebal.nl> - 2015-11-04 11:19 +0100
          Re: Performance JPA Arne Vajhøj <arne@vajhoej.dk> - 2015-11-07 22:05 -0500
  Re: Performance JPA Arne Vajhøj <arne@vajhoej.dk> - 2015-11-02 20:08 -0500
    Re: Performance JPA Cecil Westerhof <Cecil@decebal.nl> - 2015-11-03 07:55 +0100
      Re: Performance JPA Arne Vajhøj <arne@vajhoej.dk> - 2015-11-03 20:45 -0500
  Re: Performance JPA Lew <lewbloch@gmail.com> - 2015-11-16 14:43 -0800

csiph-web