いつか SDN 3.3.0 を使用して POC を行いました。
現在、SDN 4.0.0.M1 で POC を試みています。DB をクエリするリポジトリがアプリケーション側に存在する実行中のプロジェクトを作成できました。しかし、そのパフォーマンスはそれほど素晴らしいものではありません。
サーバー内でプラグインとして実行できる拡張機能を作成しようとしています。しかし、ここでの問題は、SDN API が 3.3.0 と 4.0.0.M1 の間でかなり変更されていることです。
私は現在、拡張機能でドメイン オブジェクトを公開することに行き詰まっています。3.3.0 には SpringPluginInitializer がありますが、これは同じ目的で使用できますが、4.0 では同様のものを見つけることができませんでした。SDN 4.0 を使用してプラグインを構成する方法について、誰かポインタやチュートリアルを教えてもらえますか?
ドメイン オブジェクトとリポジトリを PFB します。
package org.neo4j.domain;
import org.neo4j.ogm.annotation.EndNode;
import org.neo4j.ogm.annotation.GraphId;
import org.neo4j.ogm.annotation.RelationshipEntity;
import org.neo4j.ogm.annotation.StartNode;
@RelationshipEntity(type = "HAS_ADDRESS")
public class EmployeeToAddressRelationship {
@GraphId
private Long id;
@StartNode private Employee employee;
@EndNode private Address address;
//@RelationshipType private relationshipType;
public EmployeeToAddressRelationship()
{
super();
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Employee getEmployee() {
return employee;
}
public void setEmployee(Employee employee) {
this.employee = employee;
}
public Address getAddresss() {
return address;
}
public void setAddresss(Address address) {
this.address = address;
}
}
package org.neo4j.domain;
import org.springframework.data.annotation.TypeAlias;
import org.neo4j.ogm.annotation.GraphId;
import org.neo4j.ogm.annotation.NodeEntity;
@NodeEntity
@TypeAlias("ADDRESS")
public class Address {
@GraphId
private Long id;
public String property1;
public String property2;
public String property3;
public String property4;
Address(){}
//getters and setters for all properties
}
package org.neo4j.repository;
import java.util.Map;
import org.neo4j.domain.Employee2Result;
import org.neo4j.domain.Address;
import org.neo4j.domain.Employee;
import org.neo4j.domain.EmployeeToAddressRelationship;
import org.springframework.data.neo4j.annotation.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface EmployeeRepository extends CrudRepository<Employee, String> {
@Query("MATCH p=(node1:NODE1)<-[rel1:REL1]-(node2:NODE2)<-[rel2:REL2]-(node3:NODE3)<-[rel3:REL3]-(node4:NODE4)<-[empRel:REL4]-(emp:EMPLOYEE) WHERE node1.property1={0} AND node2.property2={1} AND node3.property3={2} RETURN emp ORDER BY emp.timestamp DESC")
public Iterable<Employee> method1(String property1, String property2, String property3);
@Query("MATCH p=(node1:NODE1)<-[rel1:REL1]-(node2:NODE2)<-[rel2:REL2]-(node3:NODE3)<-[rel3:REL3]-(node4:NODE4)<-[empRel:REL4]-(emp:EMPLOYEE)-[addressRel:HAS_ADDRESS]->(address:ADDRESS) WHERE node1.property1={0} AND node2.property2={1} AND node3.property3={2} RETURN emp,addressRel,address ORDER BY emp.timestamp DESC")
public Iterable<Employee2Result> method2(String property1, String property2, String property3);
}
package org.neo4j.domain;
import java.util.Set;
import org.springframework.data.annotation.TypeAlias;
import org.neo4j.ogm.annotation.GraphId;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Relationship;
import org.neo4j.ogm.annotation.typeconversion.DateString;
import org.neo4j.ogm.annotation.typeconversion.NumberString;
@NodeEntity(label="EMPLOYEE")
public class Employee {
@GraphId
private Long id;
public String property1;
public String property2;
public String property3;
public String property4;
@Relationship(type = "HAS_ADDRESS", direction = Relationship.UNDIRECTED)
Set<Address> address;
public Searchspace()
{}
//getters and setters for all properties
}
package org.neo4j.domain;
import org.neo4j.ogm.annotation.ResultColumn;
import org.springframework.data.neo4j.annotation.QueryResult;
@QueryResult
public class Employee2Result {
@ResultColumn("emp")
Employee emp;
@ResultColumn("address")
Address address;
@ResultColumn("addressRel")
EmployeeToAddressRelationship addressRel;
//getters and setters for all properties
}
PS - SDN 4.0 GA のリリース時期について何か考えはありますか?
前もって感謝します、
ラフル