首页 > 解决方案 > 弹簧 WebFlux。有两种方法可以从数据库中获取数据(直接操作符和通量操作符)?有什么区别?

问题描述

我使用 Spring Data 和 WebFlux。我有两种方法可以从数据库中获取数据。

第一种方式:我可以使用以下请求获取数据 -

Flux(?) findAllByName(String name)

第二种方式:我可以使用运算符,因为我使用了 WebFlux

findAll().filter(x -> x.name.equals(name))

有什么区别?
哪一个更好?

标签: spring-datareactive-programming

解决方案


过滤发生在Flux(?) findAllByName(String name)仅返回具有匹配名称的记录的数据库内。

因为findAll().filter(x -> x.name.equals(name))您从数据库中获取所有记录(表、文档集合......)并在您的应用程序中过滤它们。

如果您的数据库存储了千兆字节的数据,那么在整个网络中移动它并不是一个可行的策略。因此第一个变体是优选的。


推荐阅读