|
|
1
33
看看 Scala ,这是一种功能强大的函数式编程语言,但类似于Java,运行在Java平台上。
编辑: 下面是Scala查询功能的一个示例:
|
|
|
2
30
刚刚听说过它的人可能会认为它只是数据库集成。稍微使用过它的人可能会想到类似SQL的语法。那些真正钻研的人会意识到它的一元理解方面,即使他们不知道它是什么。 ScalaQuery 它通过一元理解提供数据库集成(这样做的内在能力是单子很酷的主要原因)。另一个项目叫做 ScalaQL ,我认为,打算提供几乎相同的东西,但使用编译器插件来增强它。我不知道你提到的米格尔·加西亚的工作,但是,看到他完成的其他工作,我很激动。
Scala没有做两件事。第一种是类似SQL的语法。这一点无济于事:SQL语法在Scala中看起来不合适。我认为可以肯定地说,大多数Scala程序员更喜欢他们熟悉的东西——所谓的理解。 另一件事是我还没有讨论的,AST操纵。这是一种操作已由编译器解析但尚未转换为字节码的代码的能力,允许在生成完成之前对其进行修改。 我认为这样的事情对Scala是一个福音——见鬼,对任何语言都是如此。但是,再一次,我有一个作为第四程序员的背景,能够在编译时修改代码是上帝赋予我的权利。Net可以通过LINQ实现,其他一些语言也可以,比如Ruby。 |
|
|
3
13
由于目前缺少闭包,LINQ在Java中很难实现。假设Java7真的 做 为了获得合理紧凑的闭包支持和扩展方法,LINQ在“点表示法”方面应该是可行的,即使它没有得到查询表达式的等价物。 Google Collections Library Guava 当它准备好的时候)包含许多必需的方法——当闭包支持看起来相当最终时,101个类似LINQ的API就出现了,我不会感到惊讶。 但是,我看不到(目前)Java得到任何类似表达式树的东西,因此我怀疑,除非您有自定义编译,否则您将仅限于LINQ to对象。 |
|
|
4
11
此外,因为Java<7没有本机闭包,只能使用字符串来引用内容,如果输入错误,IDE无法反思这些内容以显示问题(然而,如果有人为Quaere编写内省插件,一个更智能的IDE可能能够处理这个缺点。) |
|
|
5
11
lambdaj 图书馆您可以找到声誉最高的用户,如下所示:
它在Quaere库方面有一些优势,因为它不使用任何魔术字符串,它是完全类型安全的,并且在我看来,它提供了更可读的DSL。 |
|
|
6
4
你可以试试 diting 它在集合上实现可链接查询方法。
|
|
|
7
3
CQEngine或集合查询引擎 http://code.google.com/p/cqengine/ 看起来非常有希望。但我还没试过。它允许您在集合上构建索引并查询它们。应该很快。 |
|
|
8
2
JVM上有没有像LINQ-2-SQL这样简单的东西?我想使用一些工具从DB方案生成实体(类),并使用它们直接与DB交互。有没有无XML的解决方案?我不想对这些类进行注释。在.NET中,该工具称为sqlmetal。可以说,它是一种生成所有DB类的预处理器。
|