Um pouco sobre QueryDsl

Alguns links e trechos sobre o framework QueryDSL. (No final do texto, deixei os links onde poderá encontrar os trechos contidos nesse resumo na íntegra e também, dois vídeos apresentando o QueryDSL em diferentes contextos.)

“Querydsl provides a typesafe querying layer on top of JPA, JDO, JDBC and other backends. ”

“Querydsl for SQL provides a typesafe view of the relational schema and makes expressing database queries in Java as intuitive as possible.”

“O Querydsl é compatível com as anotations do JPA. Através de um plugin do maven são criadas classes contendo todos os mapeamentos das suas entidades, uma espécie de sombra da entidade contendo variáveis estáticas. Dessa forma qualquer alteração no mapeamento será refletido nas classes do Querydsl.
Por padrão as classes do Querydsl possuem o mesmo nome das entidades acrescido do prefixo ”Q”. Ex: Entidade “Pessoa” gera “QPessoa”.”

“General usage

Use the the cascading methods of the com.mysema.query.sql.SQLQuery interface like this

from : Define the query sources here.

innerJoin, join, leftJoin, fullJoin, on : Define join elements using these constructs. For the join methods the first argument is the join source and the second the target (alias).

where : Define the query filters, either in varargs form separated via commas or cascaded via the and-operator.

groupBy : Define the group by arguments in varargs form.

having : Define the having filter of the “group by” grouping as an varags array of Predicate expressions.

orderBy : Define the ordering of the result as an varargs array of order expressions. Use asc() and desc() on numeric, string and other comparable expression to access the OrderSpecifier instances.

limit, offset, restrict : Define the paging of the result. Limit for max results, offset for skipping rows and restrict for defining both in one call.”

Alguns exemplos:


List persons = queryFactory.selectFrom(person)
.where(
person.firstName.eq("John"),
person.lastName.eq("Doe"))
.fetch();


List persons = queryFactory.selectFrom(person)
.orderBy(person.lastName.asc(),
person.firstName.desc())
.fetch();

Apresentação do Edson Yanaga sobre QueryDSL:
https://www.infoq.com/br/presentations/sql-facil-no-android
Referências bibliográficas:
http://www.querydsl.com/
http://blog.mysema.com/2011/01/querying-in-sql-with-querydsl.html
http://blog.digithobrasil.com.br/o-poder-do-type-safe/
https://www.youtube.com/watch?v=bLlEgnJCYvo&feature=youtu.be

Anúncios

Obrigado pelo comentário.

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s