Spring Data Neo4j doesn't have lazy loading .
无论如何我都想在我的项目中延迟加载。毕竟,如果我不能依靠它每次都能真正获得我想要的东西,那么拥有一个 getter 到底有什么意义呢?
因此,为了让我的域模型延迟加载,我正在考虑将它们注释为 spring 组件,并向我的 getter 添加逻辑,以便在我尝试访问它们时延迟加载字段。我知道这会将我的模型与 neo4j 强耦合,但我宁愿有这种强耦合也不愿没有延迟加载。
不过,在我开始将我的所有模型转换为使用它之前,我想看看是否有人可以告诉我除了紧密耦合之外这样做还有什么问题。 Spring 数据不应该对我的模型也作为 spring 组件有任何问题,对吗?如果我愿意,我可以从应用程序上下文中引用我的服务的静态实例(我已经有了静态引用,所以我不必制作我所有的 Vaadin 前端类 spring 组件。)会不会是您认为使用这些更好吗?
最佳答案
我认为所谓的高级映射模式可以立即完成您想要完成的大部分工作。如果您使用简单映射模式,所有数据都将被复制到实体中,并且所有关系都将在使用@Fetch 注释时被提取。高级映射模式使您的实体成为节点的一种包装器,并且仅在您显式寻址实体时才访问底层节点。这样,大量的数据就会被延迟加载。确保在事务中处理您的实体,否则每次调用都会创建一个事务,从而影响您的性能。
参见 reference documentation有关此主题的大量重要信息。
关于java - 在 Spring Data Neo4j 中实现延迟加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15564880/