---
title: 'JaQue Version 1.5: MS LINQ Expression Trees für Java'
url: 'https://tutego.de/blog/javainsel/2009/06/jaque-version-1-5-ms-linq-expression-trees-fur-java'
markdown: 'https://tutego.de/blog/javainsel/2009/06/jaque-version-1-5-ms-linq-expression-trees-fur-java.md'
date: '2009-06-11'
description: 'Von der Webseite: JaQue provides an infrastructure for Microsoft LINQ like capabilities on Java platform. Using ASM, JaQue builds expression trees, which are used to build a query in domain specific technology or language, such as SQL. This way Java developers can focus on writing application logi…'
taxonomy:
  category:
    - 'Open Source'
---

# JaQue Version 1.5: MS LINQ Expression Trees für Java

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://tutego.de/blog/javainsel/)

## JaQue Version 1.5: MS LINQ Expression Trees für Java

11.06.2009 · [Christian Ullenboom](https://tutego.de/blog/javainsel/author/admin/)

Von der [Webseite](http://code.google.com/p/jaque/):

> JaQue provides an infrastructure for Microsoft [LINQ](http://msdn.microsoft.com/en-us/library/bb308959.aspx) like capabilities on Java platform. Using [ASM](http://asm.objectweb.org), JaQue builds expression trees, which are used to build a query in domain specific technology or language, such as SQL. This way Java developers can focus on writing application logic in the language they know – Java, regardless what the underlying technology or language is in use. JaQue to `Objects` and JaQue to XML are currently supported and JaQue to JPA is under development.

Ein Beispiel macht das praktisch deutlich:

```java
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hibernate");  EntityManager em = emf.createEntityManager();  JaqueEntityManager jem = new JaqueEntityManager(em);  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)));
```

Wie bei LINQ soll eine eine API für die verschiedenen Datenquellen geben, also XML, Objekte, Datenbanken, … Für JPA schreibt die Seite “Currently it’s able to perform only simple SELECTs, JOINs and AGGREGATEs”. Das ist natürlich nicht viel. Insofern ist diese Lösung WEIT von den LINQ to SQL-Möglichkeiten entfernt.

Der Hinweis der Webseite auf “Interoperability with Java Closures” ist natürlich hinfällig. Dadurch, dass Closures aber wegfallen, wird die ganze API viel aufgeblähter, als wenn man Closures hätte. Die Scala-Variante ist daher auch viel kürzer.

PS: Die nächsten 2 Wochen gibt es keine Blog-Einträge, da ich ich Afrika bin.

Kategorien: [Open Source](https://tutego.de/blog/javainsel/category/open-source/)

[← Alle Beiträge](https://tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [GWT-bezogene Videos von der Google I/O Konferenz 2009](https://tutego.de/blog/javainsel/2009/06/gwt-bezogene-videos-von-der-google-io-konferenz-2009.md)
