Spring Data Graph 1.1.0,支持 Neo4j,现已发布
尊敬的 Spring 社区成员:
我们欣喜地宣布,支持 Neo4j 的 Spring Data Graph 项目的第二个版本 (1.1.0.RELEASE) 现已发布!
在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 模板中执行 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 模板 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…