Java中与Linq和Entity Framework相对应的是什么?

33

最近我玩过微软的 Linq (to SQL and Objects) 以及 Entity Framework,想知道非 .Net 平台(特别是 Java)的相应替代方案是什么?


2
对于 Linq to objects,请查看此链接:github.com/nicholas22/jpropel-light。以下是一个真实的例子:new String[] { "james", "john", "john", "eddie" }.where(startsWith("j")).toList().distinct(); - NT_
8个回答

22
考虑使用Querydsl:http://www.querydsl.com 它支持JPA/Hibernate、JDO、SQL和Collections。
Querydsl完全类型安全,支持IDE中的自动完成,并在多个后端顶部提供了一种常见的查询语法。
我是Querydsl的维护者,并且一段时间前我写了一个与其他框架进行比较的文章
它略带偏见,但展示了不同的重点:
  • 静态类型或动态类型
  • 支持哪些后端
  • 查询构造接口是否级联
新的框架也尝试使用闭包语法。

1
为什么这被标记为垃圾邮件?据我所见已经回答了问题。 - Yacoby
@Yacoby,请查看http://meta.stackexchange.com/questions/50038/it-doesnt-matter-what-the-question-is-theres-only-one-answer(在我看来,这个问题已经被Timo很好地解决了)。 - Arjan

4

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


这看起来非常有趣。它不是一个数据库工具,而是一种使用SQL操作Java对象的方式(就像LINQ to Objects)。 - Jim Ferrans

3

Java没有Linq的等效物。但是,Scala是一种函数式语言,可以编译成Java字节码,它有类似的东西:扩展的for循环语法。


2

请看JaQue

(翻译:请查看JaQue。)

2

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


2
对于LINQ(更准确地说是LINQ to Objects),您可以从Java 8开始使用Streams。
但是,这不适用于数据库,仅适用于内部对象,如集合和列表。
它非常强大,但在我看来不如LINQ完整。
请查看此教程-http://www.oracle.com/technetwork/articles/java/ma14-java-se-8-streams-2177646.html 至于Entity Framework,我还没有找到任何一种功能如此强大的解决方案,但尚未尝试其他答案中提供的所有解决方案。

1

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接