親愛的Spring社群,
我們很高興地宣佈,Spring Data Graph 專案第二個版本(1.1.0.RELEASE),支援 Neo4j,現已釋出!
繼2011年4月 Spring Data Graph 首個公開發布之後,我們主要聚焦於使用者反饋。
透過改進的、關於工具的文件以及升級的 AspectJ 版本,我們解決了使用者報告的許多 AspectJ 問題。使用最新的 STS 和 Eclipse,以及希望很快就能支援的 Idea11,可以開發 Spring Data Graph 應用程式而無需出現紅色波浪線。為了進一步簡化開發,我們還提供了 ant/ivy 的示例構建指令碼和 gradle 的外掛。
當然,我們也跟上了 Neo4j 的開發步伐,目前使用的是最新穩定版本的 Neo4j (1.4.1)。
在 Neo4j 開發的最近幾個月裡,改進的查詢(Cypher,Gremlin)支援是一個重要的方面。因此,我們努力在所有層面上支援它。現在,可以從 Spring Data Graph 儲存庫、Neo4j-Template 執行 Cypher 查詢,也可以作為動態欄位註解的一部分,並透過引入的實體方法執行。Gremlin 指令碼也是如此。這種新的表達能力能做什麼?讓我們來看看。
例如,在一個儲存庫中
public interface PersonRepository extends GraphRepository, NamedIndexRepository {
@Query("start team=(%team) match (team)-[:persons]->(member) return member")
Iterable findAllTeamMembers(@Param("team") Group team);
@Query(value = "g.v(team).out('persons')", type = QueryType.Gremlin)
Iterable findAllTeamMembersGremlin(@Param("team") Group team);
}
Neo4j Template API 進行了徹底的重構,方法數量大大減少,更加專注於。高階查詢結果處理能力(型別轉換、對映、單個結果、處理器等)現在使用更流暢的 API 實現。這個新 API 可用於所有型別的查詢,無論是索引查詢、圖遍歷、Cypher 查詢還是 Gremlin 指令碼。
template.query("start n=(0) match n-->m return m", null).to(Node.class);
template.execute("g.v(0).out", null).to(Node.class);
template.lookup("relationship", "name", "rel1").to(String.class, new PropertyContainerNameConverter()).single();
template.traverse(referenceNode, traversalDescription).handle(new Handler<Path>() {
public void handle(Path value) {
final String name = (String) value.endNode().getProperty("name", "");
resultSet.add(name…