古镇做灯饰网站的公司,站长seo查询工具,合肥缶间网络科技有限公司,中国铁建统一企业门户长期以来#xff0c; LINQ是.NET软件工程生态系统中发生的最好的事情之一。 通过在Visual Studio 2008中引入lambda表达式和monads #xff0c;它使C#xff03;语言比Java#xff08;当时的版本6#xff09;更先进#xff0c;并且仍在讨论泛型类型擦除的优缺点。 这项成… 长期以来 LINQ是.NET软件工程生态系统中发生的最好的事情之一。 通过在Visual Studio 2008中引入lambda表达式和monads 它使C语言比Java当时的版本6更先进并且仍在讨论泛型类型擦除的优缺点。 这项成就主要归功于荷兰计算机科学家兼染料专家Erik Meijer并获得其认可他现在正从事其他项目 。 Erik MeijerTye染料专家。 Ade Oshineye摄 。 根据CC-BY-SA许可 Java现在在哪里 随着即将发布的Java 8和JSR-355 我们仍然需要LINQ吗 自上个十年中期以来已经进行了许多尝试来将LINQ的优点带给Java。 当时 Quaere和Lambdaj似乎是在图书馆级别而不是语言级别上有希望的实现。 实际上 大量流行的Stack Overflow问题暗示了实际上有多少Java人员正在并且仍然是寻找等同的东西 LINQ的Java等效项是什么 LINQ for Java工具 是否有类似LINQ for Java的东西 Linq和Entity Framework的Java等效项是什么 有趣的是“ LINQ”甚至已经成为EL 3.0 但是我们真的需要LINQ吗 LINQ有一个主要缺陷该缺陷被宣传为一项功能但在我们看来这将不可避免地导致“下一个大阻抗失配” 。 LINQ受SQL启发这根本不是一件好事。 LINQ最流行于LINQ-to-Objects 这是查询.NET中集合的一种好方法。 但是 Haskell或Scala的成功表明“集合查询”的真正功能本质倾向于使用除SELECT WHERE GROUP BY或HAVING之外的其他术语。 他们使用的术语包括“折叠”“地图”“ flatMap”“减少”等等。 另一方面LINQ使用GROUP BY和“ skip”“ take”而不是OFFSET和FETCH 等术语的混合体。 实际上除了良好的旧SQL 分区外部联接 分组集或框架窗口函数之外没有什么比功能真理更重要的了。 这些构造仅仅是SQL开发人员希望看到的结果的声明。 它们不是独立的函数实际上包含要在任何给定上下文中执行的逻辑。 而且窗口函数只能在SELECT和ORDER BY子句中使用 这在以声明方式进行思考时很明显 但是如果您没有SQL上下文这也很奇怪。 具体来说 SELECT子句中的窗口函数会影响整个执行计划以及采用索引来预取正确数据的方式。 相反真正的函数式编程对内存中集合的作用比SQL还要多。 使用SQLesque API进行集合查询是一个狡猾的决定 目的是欺骗“传统”人员采用函数式编程。 但是使集合和SQL表查询可以混淆的希望令人失望因为这样的构造不会产生所需的SQL执行计划 。 相反真正的函数式编程对内存中集合的作用比SQL还要多。 使用SQLesque API进行集合查询只是错误的决定。 令人失望的是收集和SQL表查询可能会混淆在一起因为这样的构造将不可避免地产生可怕的SQL执行计划 。 但是如果我 这很简单。 执行SQL时有两个基本选择。 “自上而下”进行操作将大部分精力放在Java域模型上。 在这种情况下请使用Hibernate / JPA通过Java 8 Streams API查询和转换Hibernate结果。 “自下而上”进行操作将大部分精力放在您的SQL /关系域模型上。 在这种情况下请使用JDBC或jOOQ然后再次使用Java 8 Streams API转换结果。 此处对此进行了更详细的说明 http : //www.hibernate-alternative.com 拥抱未来 虽然.NET在Java领域已经“领先”一段时间了但这并不是由于LINQ本身引起的。 这主要是由于引入了lambda表达式以及lambda对* ALL * API的影响。 LINQ只是如何构造此类API的一个示例尽管LINQ赢得了大多数赞誉。 但是我对Java 8的新Streams API以及它将如何包含Java生态系统中的某些功能编程感到更加兴奋。 Informatech在一篇非常好的博客文章中说明了常见的LINQ表达式如何转换为Java 8 Streams API表达式。 所以不要回头。 停止羡慕.NET开发人员。 使用Java 8我们将不需要LINQ或任何试图以“统一查询”为基础来模仿LINQ的API这对于真正的“查询目标阻抗不匹配”来说是一个更好的称呼。 我们需要真正的SQL来进行关系数据库查询并且需要Java 8 Streams API来进行内存中集合的功能转换。 而已。 使用Java 8 参考 Java 8是否仍需要LINQ 还是比LINQ更好 从我们的JCG合作伙伴 Lukas Eder在JAVASQL和JOOQ博客中获得。 翻译自: https://www.javacodegeeks.com/2013/11/does-java-8-still-need-linq-or-is-it-better-than-linq.html