1

Spring Data Commons を使用して PersistentEntity/PeristentProperty (基本的には型情報とプロパティのゲッターおよびセッター) を構築し、ネイティブ ストアから Java にロールする EntityConverter を使用する Neo4j のようないくつかの Spring Data プロジェクトがあります。これは、SDN (Spring Data Neo4j) の機能に加えて、BeanWrapper コンバーターをバンドルして、特定のプロパティ タイプが Neo4j データ構造に許可されるようにすることです。

基本的に、Java Bean には @NodeEntity アノテーションが付けられ、関係オブジェクトによって相互にリンクされたノード (単純なプロパティのみを持つ Bean を考えてください) への書き込み時に、Bean は分解されます。

オリカと同じことができるのだろうか?アノテーションを介してクラスを識別し、複雑な場合は各プロパティを再帰的に処理することを意味します。例えば:

 @NodeEntity
 class Software {
    String name;
    ....
    Organisation organisation;
    ....
 } 

 @NodeEntity
 class Organisation {
    String name;
 }

プロパティと関係オブジェクト (ソフトウェアのメンバーとしての組織を示す) をそれぞれ含む 2 つのノードにロールバックする必要があります。

4

1 に答える 1

3

カスタム アノテーションをサポートする Orika ClassMapBuilder の例を次に示します。ニーズに合わせて調整できると思います。

要旨 : AnnotationClassMapBuilder

Node (または MongoDB の DBObject) については、カスタム プロパティ リゾルバーを使用できます。http: //orika-mapper.github.com/orika-docs/advanced-mappings.html (ElementPropertyResolver)

編集

Orika は class-map によってマッパーを構築します。これは実際にはプロパティ ペアの単なるコレクションであり、プロパティは名前、型、セッターまたは/およびゲッターを持つ任意のものにすることができます。

Bean の各属性に対して Neo4J 側で同等のものを自動的に作成し、Orika にマッパーを構築させることができます。

たとえば、Person(name)->PrintStream マッパーを作成できます。このマッパーでは、各人のプロパティ (name) に対して、印刷データ (System.out) に相当するものを作成します。

final Builder name = new Property.Builder()
                          .name("name")
                          .type(String.class.getName())
                          .setter("append(\"My name : \").append(%s).append('\\n')");       
factory.classMap(Person.class, PrintStream.class).fieldMap("name", name, false).add().register();

factory.getMapperFacade().map(person, System.out); // This print to default output stream, My name : xxxx
于 2013-03-21T10:39:42.960 に答える