我正在使用Tomcat上运行的webapp,它使用spring-data以嵌入模式连接到neo4j图。 我想使用neo4j服务器而不是嵌入式模式,我正在寻找一些帮助,以确保如何做到这一点。 我的一些应用程序服务非常困难,并且在单个事务中将dto中的几个密码请求的结果合并回用户。
首先我认为我必须创建一个服务器非托管扩展,我想我应该遵循以下步骤。 - 使用springMVC和spring security保持我的webapp,以保持和保护用户会话。 - 在特定的jar my-app.jar中重新组合我的所有事务服务 - 使用Jax-RS在my-app.jar的每个服务上添加REST访问点 - 使用Spring spring控制器中的spring restTemplate来调用my-app.jar中的服务
第一个问题:这种做事方式是好方法吗? 第二个问题:我的服务层有很多弹簧注入。如何让它们保持工作(如何在服务器扩展中添加依赖项?
然后我发现了graphAware,我想知道是否应该使用它。
最后我刚看了这篇文章http://jexp.de/blog/2014/12/spring-data-neo4j-improving-remoting-performance/,似乎我应该使用 SpringCypherRestGraphDatabase(如本文末尾的粗体文字所述)。
好吧,我有点迷失了,我很感激使用neo4j服务器的任何帮助,而不是我的应用程序的嵌入模式,它包含一些复杂的事务。
答案 0 :(得分:3)
您在这里有很多选择,而且您的思路正确。
选项1:
如果您的用例在业务逻辑上很重,并且您的问题表明它们是,那么使用非托管扩展路由是一种选择。
基本上,您可以组合最高性能的Java API和Cypher(如果您愿意)来执行您的用例。顺便说一下,我不会在这里使用SDN,所以你必须手动进行映射,但是真的有任何映射吗?也许您只想为每个用例执行遍历/ Cypher查询。
每个用例然后公开一个简单的REST API,由运行Spring MVC,Spring Security的Spring驱动的应用程序使用。您可以在应用程序的控制器中使用Spring中的RestTemplate。
要为所有这些添加一个扭曲,您可以使用GraphAware框架来开发"非托管扩展"使用Spring MVC也是如此。这将是我的首选选项,对您的域名/应用程序一无所知。
选项2:
迈克尔建议使用新版本的SDN(v4)。这允许您使用带注释的域对象,Spring MVC,Security等运行应用程序。操作(CRUD和其他)自动转换为Cypher并通过线路发送到以服务器模式运行的Neo4j(无需扩展)。然后将结果编组回Java对象。
我们即将发布SDN v4的里程碑1。它不应该超过一个星期。也就是说,它仍将是里程碑版本,因此尚未准备好投入生产。 GA预计将于5月发布(ish)。
您已经可以自己尝试SDN v4了。克隆此回购:https://github.com/spring-projects/spring-data-neo4j,请确保您已登录4.0分支,然后对其执行mvn clean install
。 Here's a sample app,使用Angular JS和Spring Boot构建。
请与反馈/问题/问题联系(最好通过graphaware dot com的电子邮件信息)。干杯!
答案 1 :(得分:0)
我建议你稍等一下,直到SDN4里程碑1出来(由GraphAware开发),这是从头开始为Neo4j-Server编写的。