Encuesta

¿Qué sistema operativo empleas principalmente cuando desarrollas Java?

28-02-2010 - 917 votos

Destacados Agenda

Más eventos |

JaQue, una implementación de Microsoft LINQ para la plataforma Java

01/07/2009 08:26 abraham

LINQ (Language Integrated Query) es un lenguaje de consulta bastante parecido a SQL pero cuyo propósito es realizar consultas sobre cualquier colección de datos, sin necesidad de que dicha colección tenga que estar almacenada en una base de datos relacional. Por ejemplo, permite realizar consultas sobre cualquier colección de elementos (una lista, un árbol...) o sobre un documento de XML. Si no me acuerdo mal, fue introducido en la versión 3.0 de C#.


JaQue es un proyecto opensource que ha desarrollado un porte de LINQ a Java, para ello se han basado en la propuesta de closures BGGA. Según el autor, la versión 1.5 de JaQue es una implementación completa de LINQ y cuenta con soporte para colecciones de datos, y XML. También hay una preview del soporte para JPA.


Para probarlo es necesario emplear la implementación de BBGA. La librería se distribuyen bajo la licencia GPL v3 y además de soportar el lenguaje de programación Java, también cuenta con interoperabilidad con Scala.

Volver a actualidad

Etiquetas: j2se, jaque, LINQ

Comentarios: 3

  • greeneyed 01/07/2009 10:39

    Creo que deberían trabajar un poco más en mostrar los puntos fuertes y los beneficios a través de ejemplos, por que mostrar:

    ----

      Queryable orders = jem.from(Order.class);
      System.out.println(count(where(new Predicate() {
            public Boolean invoke(Order t) throws Throwable {
                    return t.getOrderID() > 11000;
            }
      }, orders))); //prints 77
    ----

    como sustituto de 

    ----

    Query query = em.createQuery("SELECT COUNT(o.OrderID) FROM Order o where o.OrderID > 11000");
    System.out.println("Count result:" + query.getSingleResult());

    ----

    Le deja a uno con cara de... "¿perdon?". Y para ventajas de compilación, está al caer el JPA Criteria API.

    Así que deberían mostrarlo más para lo que no existe alternativa, como trabajando con colecciones, y donde el equivalente JPA es menos eficiente. Si no la gente "no lo va a pillar".

    My 2ec

  • Anónimo 01/07/2009 18:24

    Estoy de acuerdo con greeneyed. Además, si emplea la implementación de BGGA por qué para el predicado utiliza una clase anónima y no un closure?

    Así sería mucho más claro (en sintáxis de C# porque no conozco bien la de BGGA):

    var orders = GetOrders();
    Console.WriteLine(orders.Count(order => order.OrderID > 11000));
     

  • datanucleus 01/07/2009 18:58

    Algo parecido es JDOQL por QueryDSL donde puedes poner un query como

    Customer bob = query.from(customer).where(customer.firstName.eq("Bob")).uniqueResult(customer);

Escribe tu comentario

Sun Microsystem Logo NHT-Norwick Logo

© 2002-2007 Asociación javaHispano