1

Spring Data Neo4j没有延迟加载

无论如何,我想在我的项目中延迟加载。毕竟,如果我不能依靠它来实际获得我希望它每次都能获得的东西,那么拥有一个 getter 的真正意义何在?

因此,为了使我的域模型能够延迟加载,我正在考虑将它们注释为弹簧组件,并向我的 getter 添加逻辑,以便在我尝试访问它们时延迟加载字段。我知道这会将我的模型与neo4j 强耦合,但我宁愿拥有这种强耦合也不愿没有延迟加载。

不过,在我开始将我的所有模型转换为使用它之前,我想看看是否有人可以告诉我除了紧密耦合之外这样做有什么问题。Spring 数据不应该对我的模型也作为 Spring 组件有任何问题,对吧?如果我愿意,我可以引用我从应用程序上下文中获得的服务的静态实例(我已经有了静态引用,所以我不必让我的所有 Vaadin 前端类都成为弹簧组件。)你觉得这些更好用吗?

4

3 回答 3

2

我认为所谓的高级映射模式可以完成您想要完成的大部分工作。如果使用简单映射模式,所有数据都将被复制到实体中,并且在使用@Fetch 注解时将获取所有关系。高级映射模式使您的实体成为节点周围的一种包装器,并且仅在您明确寻址实体时才访问底层节点。这样一来,大量的数据就会被延迟加载。确保您在事务中处理您的实体,否则将为您进行的每个调用创建一个事务,从而影响您的性能。

有关此主题的大量重要信息,请参阅参考文档

于 2013-03-28T13:49:43.897 回答
1

不透明,但仍然偷懒

template.fetch(person.getDirectReports());
于 2013-04-23T00:42:43.667 回答
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

于 2016-06-14T10:02:09.813 回答