Hi everyone,
I use neo4j 2.0.1 with rest api.
To obtain better performances in my webapp, I refactor my code by using
@QueryResult objects and do more "big" requests instead of many small
requests.
But the logs show me than each time I get an object from the query result,
a request is sent:
2014-03-06 15:15:43,208 - DEBUG: SpringRestCypherQueryEngine - Executing
remote cypher query: match (n) where id(n)={nodeId} return labels(n) as
labels params {nodeId=509}
This request only get the labels of a node, and it seems there is no cache,
the request can be sent several time for a same node.
On a collection, dozens of requests are sent...
I seek in SDN code what are the reason, and i found
Neo4jEntityConverterImpl :
public <R extends T> R read(Class<R> requestedType, S source, MappingPolicy
mappingPolicy, final Neo4jTemplate template) {
// 1) source -> type alias
// 2) type alias -> type
// 3) check for subtype matching / enforcement
final TypeInformation<R> requestedTypeInformation = requestedType
== null ? null : ClassTypeInformation.from(requestedType);
final TypeInformation<? extends R> targetType =
typeMapper.readType(source,
requestedTypeInformation); <-- causes get labels request
...... //
}
If I correctly understand, this code determines which classes must be
instantiate. But what i don't understand is that requestedTypeInformation
and targetType have the same value.
So would it be possible to bypass the db check and only take
the requestedTypeInformation value ?
I found a quite similar question on stakoverflow:
http://stackoverflow.com/questions/22209220/unnecessary-additional-label-requests-for-nodes
Thanks
--
You received this message because you are subscribed to the Google Groups
"Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.