dao - Neo4j project structure -


i looking build relatively complex neo4j application, intend split in 2 separete projects, namely frontend , backend. frontend html5 , not relevant question, backend have rest interface jersey, it's structure behind rest interface have questions about.

atm, how envisioned :

restimpl <-data-> service  <-dto-> repository <-node-> dao <--> neo4j singleton 

the general flow restimpl receives json , converts simple java objects strings, int, ... passed on service creates dto them. dto passed on repository performs dao calls needed write such dto database (one dto may require several nodes , relations created). dao thinking of creating both core api , cypher implementation, has basic graph functions creating node, creating relation, deleting node, ... methods useful repositories basically. neo4j singleton contain graphdatabaseservice instance , configuration stuff.

this relatively complex structure want project modular. makes easy dependency injection. (everything written against interface well)

however, examples on internet have different implementation. make dto's wrapper around neo4j node or @ least store underlying node in dto. allow rest-service-dao structure.

but doesn't allow me change repository implementations , put different database behind application.

what "most correct way" want do?

i use you've described above , find works well(one project in production, 1 there) , not mix concerns. don't use spring data option consider.

i have defined domain objects standard pojo's- no neo4j stuff in them @ all. persistence managed dao's- contain cypher queries, , in cases core api work depending on complexity.

the graphdatabase injected (i have 2 contexts- embeddedgraph implementation injected production , impermanentgraph tests). rest service exposed using jersey deals domain objects and/or dto's. neo4j code seen in persistence layer. got couple of general convenience methods exposed index/fetch index etc.

i wouldn't go wrap-node way- tried found brings along own set of problems , results in smelly design. looks you're on right track (to me @ least)


Popular posts from this blog

How to calculate SNR of signals in MATLAB? -

c# - Attempting to upload to FTP: System.Net.WebException: System error -

ios - UISlider customization: how to properly add shadow to custom knob image -