【问题标题】:What are the Java equivalents to Linq and Entity Framework什么是 Linq 和实体框架的 Java 等价物
【发布时间】:2016-06-29 03:08:33
【问题描述】:

最近玩过 Linq(SQL 和对象)以及 Microsoft 的 Entity Framework,我想知道非 .Net(特别是 Java)的等价物是什么?

【问题讨论】:

  • 对于 Linq to objects 检查这个:github.com/nicholas22/jpropel-light,真实示例:new String[] { "james", "john", "john", "eddie" } .where(startsWith("j")).toList().distinct();

标签: java linq entity-framework


【解决方案1】:

考虑使用 Querydsl:http://www.querydsl.com

它支持 JPA/Hibernate、JDO、SQL 和 Collections。

Querydsl 是完全类型安全的,支持 IDE 中的自动完成功能,并在顶级多个后端提供通用查询语法。

我是Querydsl的维护者,前段时间写了一个comparison to other frameworks

略有偏差,但重点不同

  • 是否静态类型
  • 支持哪些后端
  • 是查询构造级联与否的接口

较新的框架也尝试使用闭包语法。

【讨论】:

【解决方案2】:

有一个名为 JoSQL 的 Java 项目提供对象查询功能以及类似 SQL 的语法。
虽然我自己没有使用过它,但我知道它被用于一些重量级的应用程序中。

【讨论】:

  • 这看起来很有趣。它不是数据库工具,而是一种使用 SQL 对 Java 对象(如 LINQ to Objects)进行操作的方法。
【解决方案3】:

Java 没有 Linq 等价物。然而,Scala 是一种编译成 Java 字节码的函数式语言,它有一些接近之处:扩展的 for 循环语法。

【讨论】:

    【解决方案4】:

    看看JaQue

    【讨论】:

      【解决方案5】:

      对于数据库繁重的工作,SQLJ 可能是一个选项。缺点是它不是纯 Java,需要预处理器。

      【讨论】:

        【解决方案6】:

        对于 LINQ(更准确地说是 LINQ to Objects),您可以使用从 Java 8 开始的 Streams

        但这不适用于数据库,仅适用于集合和列表等内部对象

        它确实很强大,但不如 LINQ 完整(在我看来)

        查看本教程 - http://www.oracle.com/technetwork/articles/java/ma14-java-se-8-streams-2177646.html

        至于实体框架,没有什么比我发现的更强大的了,但还没有尝试过其他答案中提供的所有解决方案

        【讨论】:

          【解决方案7】:

          除非您使用 javacc 创建您自己的等价物,否则您不会找到 LINQ 的等价物。

          直到有人找到可行的方法的那一天,还有一些不错的选择,例如

          【讨论】:

            【解决方案8】:

            没有确切的替代方案可以像 LINQ 一样通用。但是,如果我们谈论的是 LINQ to SQL,那么当您将 JPA 与支持“注入语言”功能的 IDE 一起使用时,它确实是一种替代方案。例如。 IDEA 将在字符串中全面完成 JPA 查询

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2010-11-16
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-11-27
              • 2015-11-04
              • 2015-04-07
              相关资源
              最近更新 更多