Thanks Michael, 

I understand the need to check the label directly on db. I hadn't think 
about inheritance.
Do you think this check could became optional (with configuration) to 
choose between fully operational inheritance and better performances ?


Gwendal

On Thursday, March 6, 2014 4:13:51 PM UTC+1, Michael Hunger wrote:
>
> Imagine you have a class hierarchy like Person and Developer
>
> And you have a person repo but the nodes in the db are actually developers.
>
> Then you would want to get the correct instances back (Developer) but 
> requested target type is Person
>
> How would you imagine to configure it so that it doesn't look what the 
> node is in the graph but just takes the requested type?
>
>
> Michael
>
> Am 06.03.2014 um 15:54 schrieb Gwendal Mousset 
> <[email protected]<javascript:>
> >:
>
> 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] <javascript:>.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

-- 
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.

Reply via email to