olingo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Patrick Haller (JIRA)" <j...@apache.org>
Subject [jira] [Created] (OLINGO-1113) JPAProcessorImpl.readEntity() to use entityManager.find() instead of dynamic query
Date Tue, 18 Apr 2017 17:26:41 GMT
Patrick Haller created OLINGO-1113:

             Summary: JPAProcessorImpl.readEntity() to use entityManager.find() instead of
dynamic query
                 Key: OLINGO-1113
                 URL: https://issues.apache.org/jira/browse/OLINGO-1113
             Project: Olingo
          Issue Type: Improvement
          Components: odata2-jpa
    Affects Versions: V2 2.0.8
            Reporter: Patrick Haller

The semantics of the entity manager session is that repetitive calls to
entityManager.find( PK ) will return the very same object instance from the session cache.
Transient changes are NOT flushed to persistence before as JPA already knows it can return
a consistent state. Hence in scenarios where there are repetitive reads on the same entity
or where transient changes are accumulated for bulk INSERT / bulk UPDATE, performance can
be significantly better than with the current dynamic JPQL query.

These scenarios typically involve non-trivial entity modifications (deep update, deep insert,
or linking inserted entities to parent entities) in business logic, JSR-303 bean validation
patterns in conjunction with, etc.

I would propose to check if JPAProcessorImpl.readEntity() can use entityManager.find() instead
of a dynamic query. This would resolve data integrity issues with query.getResultList() returning
a 2nd copy of the entity instead of returning the very same instance.

The explicit em.flush() calls in process(DeleteUriInfo) and processUpdate() should theoretically
not be necessary.

This message was sent by Atlassian JIRA

View raw message