代码之家  ›  专栏  ›  技术社区  ›  Milhous

LINQ for Java工具[已关闭]

  •  40
  • Milhous  · 技术社区  · 17 年前

    LINQforJava是一个有用的工具吗?我一直在开发一个工具,它允许Java对象映射到数据库中的一行。

    1. 这对Java有用吗 程序员?
    2. 会有什么特点 有用的
    8 回复  |  直到 16 年前
        1
  •  63
  •   Jon Skeet    17 年前

    LinqforJava会很不错,但问题是语言集成。

    Java没有lambda表达式那么简洁,它们是LINQ的基石之一。我想他们 通过使扩展创建匿名内部类,在普通Java之上分层查询表达式支持,而不使用lambda表达式,但这将非常可怕。如果您想执行LINQ到SQL之类的操作,还需要表达式树。

    检查异常 可以 挡道,但我们得看看。IQueryable的等价物需要有某种类型的常规检查异常——或者它可能在元素类型和异常类型中都是泛型的。。。

    对于库端,Hibernate已经提供了LINQtoSQL许多特性的“非集成”版本。对于LINQ to对象,您应该查看 Google Java Collections API -这是很多类似的事情(过滤、投影等)。当然,如果没有lambdas,它的使用会更加灵活,但它仍然非常非常方便。(我在工作中一直使用Google Collections代码,我不想回到“普通”Java集合。)

        2
  •  14
  •   om-nom-nom Dennis Williamson    14 年前

    值得注意的是 Scala 2.8 is going to have LINQ support ...


    实际上,scala standart集合提供的API在某种意义上类似于对象的LINQ。以下是一个例子:

    List("Paris","Berlin","London","Tokyo")
      .filter(c => c.endsWith("n"))
      .map(c => c.length) 
    // result would be length of the words that ends 
    // with "n" letter ("Berlin" and "London").
    

    不要害怕新行点语法:您可以用简单的旧样式编写代码:

    Array(1,2,3,4,5,6).map(x => x*x)
    

    还有许多项目提供了接近LINQ到SQL的语法。例如,取自Squeryll的片段:

    import Library._
    using(session) { 
      books.insert(new Author(1, "Michel","Folco"))            
      val a = from(authors)(a=> where(a.lastName === "Folco") select(a)) 
    }
    // but note that there is more code behind this example
    
        3
  •  8
  •   Timo Westkämper    15 年前

    对于这个问题的更一般的方法,考虑使用 Querydsl .

    我是Querydsl的维护者,所以这个答案是有偏见的。

        4
  •  4
  •   Konstantin Triger    7 年前

    JAVA LINQ to SQL 实施与.NET LINQ相比,提供了完整的语言集成和更大的功能集。

        5
  •  1
  •   yrcjaya    17 年前

    冬眠 使用HQL。您可以创建对象,但仅限于关系数据库

        6
  •  0
  •   Emil Wcisło    16 年前

    SBQL4J . 它提供:

    • 与当前JVM的兼容性(它使用预处理将查询转换为纯Java代码)
    • 性能好(运行时不使用反射)
    • 清晰、精确的语义,没有不必要的、模糊的语法糖分。
        7
  •  0
  •   Peter Mortensen Pieter Jan Bonestroo    16 年前

    第一种方法:使用字符串代替lambda实现javalinq。

    写 IQueryProviders

    但首先,我想要一个有效的LINQ:在语言中键入LINQ,这是一件好事,但主要的一点是:有一种写作的方式 IQueryProviders POJO s、 Hibernate的提供程序、SQL Server或Oracle的提供程序等。。。

        8
  •  0
  •   Fırat Küçük    15 年前