Querydsl usage in Cyclos

Until now Querydsl has been mostly used in smaller projects outside of Mysema. Cyclos is one of the larger adopters of Querydsl.

Cyclos is an open source system for complementary currencies and is used in several projects with methodologies like C3, LETS, time banks and Barter's. See their homepage for more information. From their SourceForge download statistics can be seen that there are a large number of downloads for a server application in this area.

Cyclos 4

The current stable version of Cyclos is 3.5. Beta versions of 3.6 with numerous improvements are already available. Cyclos 4 was started a year ago. Some new features needed major refactorings to the old code so a new branch with new technologies was started. Struts, Hibernate and Tomcat were replaced with GWT, EJB3 (using Hibernate), Glassfish and Querydsl.

The goal was to make everything configurable: from accounts, to custom fields and localization. Beside the usual application localization even proper data localization is being implemented. Configuration entities have, for example, the name in each active language.

Cyclos is being produced by two teams of programmers, one in Brazil and one in Uruguay, being part of the respective national social trade organisation: STRO Uruguay and Instrodi. Luis Fernando Planella Gonzalez from the Brazilian team is the person behind the Querydsl adoption and has been communicating actively with the Querydsl maintainers to make the adoption as smooth as possible.

Querydsl usage

The Querydsl usage in Cyclos is very advanced. The Querydsl HQL module is used in conjunction with the JPA 2 API as an replacement for the JPA 2 Criteria API. JPA 2 Criteria were found to be too verbose. See the following post for some JPA 2 Criteria vs Querydsl comparisons.

Instead of using the the default query classes for JPA 2 provided by Querydsl, custom query and subquery classes were created to customize Querydsl as good as possible to the demands of Cyclos 4 development. The customizations are Entity to DTO transformations in the query projection, convenience methods for paging and some Hibernate specific optimizations.

The sources of Cyclos 4 are accessible via Subversion from this location : https://svn.berlios.de/svnroot/repos/cyclos.

1 comment:

  1. what user i can use for download in https://svn.berlios.de/svnroot/repos/cyclos ? thank