私は、フロントエンドとバックエンドという 2 つの別々のプロジェクトに分割する予定の、比較的複雑な Neo4J アプリケーションを構築しようとしています。フロントエンドは HTML5 で、この質問には関係ありません。バックエンドには Jersey との REST インターフェイスがありますが、質問があるのはその REST インターフェイスの背後にある構造です。
Atm、これは私が想像した方法です:
RESTimpl <-DATA-> Service <-DTO-> Repository <-NODE-> DAO <--> Neo4j Singleton
一般的なフローは、RESTimpl が JSON を受け取り、それを String、int などの単純な Java オブジェクトに変換することです。これらは、DTO を作成するサービスに渡されます。その DTO は、そのような DTO をデータベースに書き込むために必要なすべての DAO 呼び出しを実行するリポジトリに渡されます (1 つの DTO で複数のノードと関係を作成する必要がある場合があります)。DAOの場合、ノードの作成、リレーションの作成、ノードの削除などの非常に基本的なグラフ機能を備えたCore APIとCypher実装の両方を作成することを考えていました...基本的にすべてのリポジトリに役立つメソッド。Neo4j シングルトンには、GraphDatabaseService インスタンスといくつかの構成要素が含まれます。
これは比較的複雑な構造ですが、プロジェクトを非常にモジュール化したいと考えています。依存性注入を簡単に実行できます。(すべてがインターフェイスに対しても書き込まれます)
ただし、インターネット上のすべての例では、実装が異なります。彼らは実際にDTOをNeo4Jノードのラッパーにするか、少なくとも基礎となるノードをDTOに保存します。ただし、REST-Service-DAO 構造のみが許可されます。
しかし、リポジトリの実装を変更して、アプリケーションの背後に別のデータベースを配置することはできません。
私がやりたいことをするための「最も正しい方法」は何ですか?