Spring Data Neo4j doesn't have lazy loading。
无论如何,我想在我的项目中加载延迟。毕竟,如果我不能依靠它来实际获得我想要的东西,那么获得吸气剂的真正意义何在?
因此,为了使我的域模型延迟加载,我正在考虑将它们注释为弹簧组件,并在我尝试访问它们时向延迟加载字段的getter添加逻辑。我知道这会将我的模型强烈地耦合到neo4j,但我宁愿拥有强耦合而不是延迟加载。
在我开始将所有模型转换为使用它之前,我想看看是否有人可以告诉我除了紧耦合之外还有任何问题。我的模型也可以作为弹簧组件使用Spring数据,对吧?如果我想,我可以引用我从应用程序上下文中得到的服务的静态实例(我已经有了静态引用,所以我没有必要将所有我的Vaadin前端类弹簧组件。)它会是你觉得哪些更好用?
答案 0 :(得分:2)
我认为所谓的高级映射模式可以完成您想要完成的大部分工作。如果使用简单映射模式,则所有数据都将复制到实体中,并且在使用@Fetch注释时将获取所有关系。高级映射模式使您的实体成为节点周围的包装器,并且只有在明确寻址实体时才访问底层节点。这样,很多数据都会被延迟加载。确保在交易中处理您的实体,否则将为您进行的每次通话创建一个交易,从而影响您的业绩。
有关此主题的大量信息,请参阅reference documentation。
答案 1 :(得分:1)
不透明,但仍然是lazy fetching。
template.fetch(person.getDirectReports());
答案 2 :(得分:0)
基于当前neo4j参考的一些更新 - http://docs.spring.io/spring-data/neo4j/docs/current/reference/html/
@Fetch是一个过时的注释
neo4jTemplate.fetch()不可用,您应该指定深度 - http://docs.spring.io/spring-data/neo4j/docs/current/reference/html/#_api_changes