java - 在 Spring Data Neo4j 中实现延迟加载

标签 java spring neo4j spring-data-neo4j

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/

相关文章:

java - OpenJDK 11 和 macOS 不支持 ZGC?

java - 当有多个用户同时访问页面时,是否需要在我的controller方法中添加synchronization关键字?

java - 在没有父 POM 的情况下使用 Spring Boot 不起作用

neo4j - 从 csv 文件在 Neo4j 中创建节点之间的动态关系

java - FileInputStream 问题 - 没有段落

java - android 上的 libcurl CURLE_SSL_CACERT_BADFILE 错误

java - 线程和文件写入

java - Spring MVC Hello World 应用程序不工作

docker - 在 Docker 容器中填充 Neo4J

java - 纯粹在内存中运行 Neo4j,没有任何持久性