No les pasa que cuando escriben hql les da miedo de equivocarse en el nombre de alguna propiedad o algo que pueda hacer explotar la aplicación? Cuando escriben consultas con criterios de hibernate, no les pasa que no saben como se deben hacer ciertas cosas o tienen que mirar el manual? No les parece poco intuitiva la API de Critera de hibernate?
Si a todo contestaste que si Querydsl es para vos. Querydsl es un framework el cual permite construir consultas type-safe muy similares a Sql para multiples formas de acceder a datos JPA, JDO y SQL.
En lugar de escribir consultas en texto lo escribimos con este dsl de forma fluida y segura.
Que ventajas tiene usar Querydsl?
- Nos puede ayudar la IDE a escribir nuestras consultas, porque son propiedades.
- Contamos con la seguridad por tipo
- Si refactorisamos nos permite refactorisar la consulta y si se rompe alguna consulta no compila.
- Es más fácil escribir consultas complejas
- Podemos escribir SQL o usarlo con Hibernate y también con MongoDB
Veamos un ejemplo de consulta:
query.from(customer) .where(customer.firstName.eq("Bob").and(customer.lastName.eq("Wilson")));
query.from(cat) .innerJoin(cat.mate, mate) .leftJoin(cat.kittens, kitten) .list(cat);
query.from(cat) .leftJoin(cat.kittens, kitten) .on(kitten.bodyWeight.gt(10.0)) .list(cat);
query.from(customer) .orderBy(customer.lastName.asc(), customer.firstName.desc()) .list(customer);
Se integra con Hibernate, maven, y también con Spring Data JPA. Además lo podemos usar con MongoDB y también con Scala.
Es de licencia Apache 2.
Dejo un video:
Dejo links:
http://www.querydsl.com/
http://www.querydsl.com/documentation
http://blog.mysema.com/2010/07/querying-hibernate-with-querydsl.html
http://blog.mysema.com/2010/11/mongodb-with-querydsl.html