首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在使用DB时,为什么更喜欢Java 8 Stream API而不是直接hibernate/sql查询

在使用DB时,为什么更喜欢Java 8 Stream API而不是直接hibernate/sql查询
EN

Stack Overflow用户
提问于 2017-04-09 15:11:33
回答 2查看 9.7K关注 0票数 22

最近,我在几个项目中看到了很多使用流过滤对象的代码,比如:

代码语言:javascript
复制
library.stream()
          .map(book -> book.getAuthor())
          .filter(author -> author.getAge() >= 50)
          .map(Author::getSurname)
          .map(String::toUpperCase)
          .distinct()
          .limit(15)
          .collect(toList()));

使用它而不是直接对数据库进行HQL/SQL查询返回已经过滤的结果有什么好处吗?

第二种方法不是要快得多吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-09 15:22:47

如果数据最初来自数据库,那么最好在数据库中进行过滤,而不是获取所有内容并在本地进行过滤。

首先,数据库管理系统擅长过滤,这是他们主要工作的一部分,因此他们对此进行了优化。还可以通过使用索引来加快过滤速度。

其次,获取和传输许多记录,并将数据解组到对象中,只是为了在进行本地过滤时丢弃其中的许多记录,这是对带宽和计算资源的浪费。

票数 33
EN

Stack Overflow用户

发布于 2017-04-09 22:53:46

Hibernate和其他ORM通常对编写实体比读取更有用,因为它们允许开发人员将特定写入的顺序卸载到框架,而几乎永远不会“出错”。

现在,对于阅读和报告,另一方面(考虑到我们在这里讨论的是DB ) SQL查询可能更好,因为中间不会有任何框架,并且您将能够根据将调用此查询的数据库而不是您选择的框架来调整查询性能,这在某种程度上为如何进行调整提供了更大的灵活性。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43304023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档